[Vm-dev] Techniques for debuggin plugins
gettimothy
gettimothy at zoho.com
Fri Apr 4 11:26:01 UTC 2014
David and Bert.
Thank you very much for the pointers.
David,
The printf-fu is strong with me!
Seriously, on Linux the SqueakSSL plugin never loads (or stays loaded longer than a primitive fail) so
that will definitely come in handy.
Thanks again.
tty
---- On Thu, 03 Apr 2014 20:01:50 -0700 David T. Lewis <lewis at mail.msen.com> wrote ----
On Thu, Apr 03, 2014 at 01:44:42PM -0700, gettimothy wrote:
>
> Howdy all.
>
> I will be debugging the SqueakSSL plugin on Linux tomorrow or so and am planning on using DDD to connect to a running process and see what I can see.
>
> Is this the approach you folks would use? or are there better methods for approaching this.
>
Sure, connecting the debugger to the running VM process will let you debug the primitive.
Compile it with CFLAGS=-g (debugger symbols, no compiler optimization). It can be tricky
because the primitive function will not be visible until the plugin has been loaded, so
you can't set the breakpoint until after the plugin module is loaded, which can be annoying
if the primitive causes the VM to crash.
Here is another debugging technique, but I have to warn you that it is a super top secret
technique known only to VM gurus, so don't let anybody know I told you about this. After
you generate the sources for the plugin, put some printf's in the source code to print
out the values of the variables or addresses or object pointers that you think may be
causing a problem. It's crude, but sometimes this is easier than trying to capture the
problem in a debugger.
If you are debugging a plugin that works when compiled for 32-bits and crashes the VM
when compiled for 64-bits, the problems are usually associated with somebody trying to
stuff a 64-bit C pointer into a 32-bit sqInt variable. Look for this kind of problem,
and print the object pointers and variables with "%lx" in the printf statements.
Put a "fflush(stdout)" after your printf statements to make sure your debugging output
gets flushed out to the console right away.
Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20140404/240fd354/attachment.htm
More information about the Vm-dev
mailing list