thank you very much On Tue, Jan 20, 2009 at 11:24 AM, Jeff Epler <jep...@unpythonic.net> wrote: > If you configure emc with --enable-simulator and run with a > configuration that doesn't load any hardware drivers, then you can use > "gdb" (commandline debugger) to single-step through your kinematics. > > Step 0: Assuming you also configured with "--enable-run-in-place", > always remember to ". scripts/emc-environment" in each terminal you use > in the steps below. > > Step 1: start rtapi_app inside the debugger and set breakpoints > > $ gdb rtapi_app > (gdb) break kinematicsForward > Function "kinematicsForward" not defined. > Make breakpoint pending on future shared library load? (y or [n]) y > Breakpoint 1 (kinematicsForward) pending. > (gdb) run > Starting program: /usr/local/jepler/src/emc2/bin/rtapi_app > > (choose kinematicsForward or kinematicsInverse depending on which > function you want to debug) > > Step 2: In another terminal, start emc. The debugger will resolve the > breakpoint and stop at the top of the kinematicsForward function: > Breakpoint 2 at 0xb7ef15cf: file emc/kinematics/pumakins.c, line 57. > Pending breakpoint "kinematicsForward" resolved > > Breakpoint 2, kinematicsForward (joint=0x8059074, world=0xb7afe200, > fflags=0xb7c760a4, iflags=0xb7c760a0) at emc/kinematics/pumakins.c:57 > 57 s1 = sin(joint[0]*PM_PI/180); > Current language: auto; currently c > (gdb) > > (if you break on kinematicsInverse, it won't stop until you first enter > coordinated mode) > > You'll find many tutorials on the net about using gdb. Here are some > good commands to know: > To turn off the breakpoint #2 so that emc will run normally for awhile: > (gdb) disable 2 > To turn it back on: > # hit ctrl-c to get gdb prompt back > (gdb) enable 2 > > To go through code a little bit at a time: > (gdb) step > (gdb) next > > To resume until the next breakpoint or until you hit ctrl-c to get > the gdb prompt back: > (gdb) continue > > To look at 'joint' as 9 doubles (in my kinematics, input for > kinematicsForward is called 'joint'): > (gdb) print (double[9])*joint > > To look at the value of local variables: > (gdb) info locals > Or just one > (gdb) print hom.tran.x > > AXIS will error out if you wait too long at the (gdb) prompt without > continuing. You can prevent this by finding the line 'if statfail > > 500:' line in src/emc/usr_intf/axis/scripts/axis.py and removing or > commenting out (put "#" at the start of the line) that line and the > following one. You can also comment out the 'print "waiting for > s.axes"' line if it gets in the way. > > --- src/emc/usr_intf/axis/scripts/axis.py 19 Jan 2009 22:48:01 -0000 > 1.216 > +++ src/emc/usr_intf/axis/scripts/axis.py 20 Jan 2009 17:17:33 -0000 > @@ -3568,11 +3568,8 @@ s = emc.stat(); > s.poll() > statfail=0 > while s.axes == 0: > - print "waiting for s.axes" > time.sleep(.01) > statfail+=1 > - if statfail > 500: > - raise SystemExit, "Invalid configuration of axes is preventing EMC > from starting" > s.poll() > > live_axis_count = 0 > > > Jeff > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > SourcForge Community > SourceForge wants to tell your story. > http://p.sf.net/sfu/sf-spreadtheword > _______________________________________________ > Emc-users mailing list > Emc-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/emc-users > >
------------------------------------------------------------------------------ This SF.net email is sponsored by: SourcForge Community SourceForge wants to tell your story. http://p.sf.net/sfu/sf-spreadtheword _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users