Mailing List
Home
Forum Home
Softimage
Carrara
trueSpace
Dir3d-l
Maya - a powerful 3D animation and visual effects software
Macromedia Flash Development
Subjects
Cameras
scaleDown command
black out solved
Aircraft Tutorial
Mathematical XYZ ?
Its done This vs That
Its done first week
recommendations for screen video captures?
3DExplorer "Oddity "
New Director
ProTeam renewals
Fuel 's new websites (X post)
Blue peter create a make toy
targeting groups question
XPost: Shockwave 3D game ( sort of )
RES: RES: RES: Fish Modeling
Emitting particles from object intersection
Fuel 's new websites (X post)
Texturing
Big Break Contest Videos
New Plugins
Models and Texture on my updated site
Error Installing Patch tS6 6
Plasma?
Looking for Inspiration
Weird EMail Q
It 's done first week ?
Cherry not cranberry
New game
Camera Animation Problem
Particle plugins?
 
gdb and debugging plugins

gdb and debugging plugins

2003-11-27       - By deane@(protected)

 Back
Reply:     1     2     3     4  

On Mon, Nov 24, 2003 at 11:55:58AM +0100, Andrew Cammarano wrote:
>
> Does anyone know of a good tutorial on using gdb to debug .so's.  Better
> yet, does anyone want to outline the specific steps I need to take to step
> through my plugin code using gdb?  Not sure what commands to call or if I
> need to attach to the Maya process..etc.

Sure, I do it all the time.

First off, when you compile your plugin, remember to get rid of the '-O'
switch, unless it says '-O0' and add '-g' and '-gstabs+'.  That latter is
very important as otherwise gdb will have a lot of trouble finding
non-static methods within classes.

Next, download and install 'ddd' so that you can debug without going crazy.
ddd provides a graphical front-end to gdb which provides a scrollable
display of source code on which you can click to set breakpoints, etc.
Very useful.

When you're ready to run maya, use the following command:

  maya -d ddd

After the ddd window comes up, start Maya by using Program -> Run Again.
(If you need to give Maya some command line args, then use Program -> Run,
which will pop up a window where you can fill in the args.)

Once Maya is up, load your plugin: ddd/gdb won't know about your sources
until you do.

Now you can set breakpoints in your source code using Source ->
Breakpoints.  The window which comes up will have a little stop-sign icon
near the top.  Click on that to get an input field.

If you want to set a breakpoint at the start of a particular method, then
enter:

  myClass::myMethod

If you want to set a breakpoint at line 123 of source file 'myFile.cpp',
then enter:

  myFile.cpp:123

Alternatively, you can use File -> Open Source to display a specific source
file, then scroll to where you want the breakpoint, right-click in the
margin to the left of the line and select 'Set Breakpoint'.

Now do whatever you need to do in Maya to hit the breakpoint.  When you do,
execution will halt and ddd will pop up a palette of buttons to let you do
things like single-step, step into functions, step over functions, continue
normal execution, and so on.

While execution is halted, ddd will also display the page of code in which
it halted, with the exact line indicated with an arrow.  You can see the
value of a variable by either hovering the cursor over its name in the
displayed source, or else highlighting its name and clicking the 'Print'
button.  The same thing works for more complex expressions: highlight the
expression and click 'Print'.  Note, however, that because the Maya API
hides most of its internal data behind opaque types, you will rarely be
able to see anything useful within a Maya API variable.  For example, you
won't be able to see the contents of an MString.


You can see the callback stack by using Status -> Backtrace, which is
especially useful for investigating crashes.  The backtrace displayed is
for the current thread.  Usually that's the one you want, but for some
particularly tricky bugs (e.g. when Mental Ray is involved) you may need to
see the call stack for a different thread.  You can do that by using Status
-> Threads to select a different thread, then using the Backtrace function
again to see the new thread's stack.


That covers about 95% of what I do in ddd/gdb.  For the rest, cruise
through the menus.  Also note that every menu item in ddd displays the
corresponding gdb command in the command-line portion of the ddd window, so
you can use that to learn about gdb commands, if you want.

===========================================================================
 - deane                          Gooroos Software: Plugging you into Maya

                         Visit http://www.gooroos.com for more information

-- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---
List-help: <mailto:listar@(protected)?Subject=help>
List-archive: <http://www.highend3d.com/maya/devarchive/>