[Vm-dev] Can I use GDB with SqueakVM ?

Eliot Miranda eliot.miranda at gmail.com
Sun Mar 28 22:49:23 UTC 2010


Hi Mariano,

On Sun, Mar 28, 2010 at 1:10 PM, Mariano Martinez Peck <
marianopeck at gmail.com> wrote:

>
>
> On Sat, Mar 27, 2010 at 5:57 PM, Eliot Miranda <eliot.miranda at gmail.com>wrote:
>
>>
>> Hi Mario,
>>
>>     first you want to compile with debug symbols and perhaps with no
>> optimization.  Second it looks like you need to link with the pthreads
>> library, not juts compile. So you can try e.g.
>>
>> platforms/unix/configure CFLAGS="-g3 -pthread" LIBS=-lpthread
>>
>> FWIW I routinely use gdb on Mac OS X, linux and windows to debug the
>> Teleplace Cog vm.
>>
>>
> Thanks Eliot. I tried what you said, but I got another problem now. I
> configure the VM, with this:
>
> ../unix/cmake/configure --CFLAGS="-g3 -pthread" --LIBS=-lpthread
>
> Then I make and make install. No problems. SqueakVM works ok and I can open
> my images.
>
> The problem is with gdb. I tried this:
>
> ubuntu at ubuntu-desktop:~/Pharo/vm/Squeak-3.11.3.2135-pharo-src/build$ gdb
> squeak
> GNU gdb (GDB) 7.0-ubuntu
> Copyright (C) 2009 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later <
> http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "i486-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> "/home/ubuntu/Pharo/vm/Squeak-3.11.3.2135-pharo-src/build/squeak": not in
> executable format: File format not recognized
> (gdb)
>
>
> And the same happens with gdb ./squeak or gdb /usr/local/bin/squeak  etc...
>
> But squeak IS executable:
>
> ubuntu at ubuntu-desktop:~/Pharo/vm/Squeak-3.11.3.2135-pharo-src/build$ ls
> -la /usr/local/bin/squeak
> -rwxr-xr-x 1 root root 1791 2010-03-28 21:57 /usr/local/bin/squeak
>

But what kind of executable is it?  What does find(1) say?  Also I find it
hard to believe that "This GDB was configured as "i486-linux-gnu"", I would
expect i686 at least.  So trying different gdbs might help.  Also have you
tried to compile a helloworld.c compiled with the same flags as the squeak
VM and see that gdb works with that?  Your problem might be gdb not the VM.

HTH
Eliot


>
> So...any ideas what can be the problem ?
>
> Thanks a lot in advance,
>
> Mariano
>
>
>
>
>
>
>> HTH
>> Eliot
>>
>> On Sat, Mar 27, 2010 at 12:54 PM, Mariano Martinez Peck <
>> marianopeck at gmail.com> wrote:
>>
>>>
>>> (cross posting)
>>>
>>> Hi folks. I have a SqueakVM with an image that uses SqueakDBX to talk to
>>> a database. SqueakDBX talks to a external library (written in C) called
>>> OpenDBX. At the same time, OpenDBX then talks to another library which is
>>> the database client library. When....I am having a problem with Firebird and
>>> it seems to be related with threads management.
>>>
>>> So, what I want to do is to start the SqueakVM with GDB, run my tests and
>>> try to get as much information as possible when it crash.
>>>
>>> So far I am in Ubuntu 9.10 and I have tried the following:
>>>
>>> ubuntu at ubuntu-desktop:~/opendbx/trunk/test$ gdb
>>> /home/ubuntu/squeak/pharo-vm-0.15.2f-linux/squeak
>>> GNU gdb (GDB) 7.0-ubuntu
>>> Copyright (C) 2009 Free Software Foundation, Inc.
>>> License GPLv3+: GNU GPL version 3 or later <
>>> http://gnu.org/licenses/gpl.html>
>>> This is free software: you are free to change and redistribute it.
>>> There is NO WARRANTY, to the extent permitted by law.  Type "show
>>> copying"
>>> and "show warranty" for details.
>>> This GDB was configured as "i486-linux-gnu".
>>> For bug reporting instructions, please see:
>>> <http://www.gnu.org/software/gdb/bugs/>...
>>> Reading symbols from
>>> /home/ubuntu/squeak/pharo-vm-0.15.2f-linux/squeak...done.
>>> (gdb) set args
>>> /home/ubuntu/squeak/pharo1.0-10500-rc1dev09.12.1/pharo1.0-10500-rc1dev09.12.dbx.1.image
>>> (gdb) run
>>> Starting program: /home/ubuntu/squeak/pharo-vm-0.15.2f-linux/squeak
>>> /home/ubuntu/squeak/pharo1.0-10500-rc1dev09.12.1/pharo1.0-10500-rc1dev09.12.dbx.1.image
>>> [Thread debugging using libthread_db enabled]
>>> Cannot find new threads: generic error
>>> (gdb)
>>>
>>>
>>>
>>> As you can see there the error
>>>
>>> "[Thread debugging using libthread_db enabled]
>>> Cannot find new threads: generic error"
>>>
>>> I am not an expert in C or VM so I don't know if I am doing the things
>>> correctly.  I tried to google a bit, and I found different solutions. I copy
>>> exactly what I found:
>>>
>>> "I've find a workaround, i've link the debugging app with libpthread and
>>> now gdb
>>> feels happy, and i can run it with gdb !"
>>>
>>> "But however, if I compile the program with -pthread option, am able to
>>> debug the program:
>>> $ cc -W -Wall -Wextra -g 20.c `pkg-config --cflags --libs gtk+-2.0`
>>> -pthread"
>>>
>>>
>>> "The problem appears to be that something goes wrong with dynamically
>>> loading libpthread in case the program has not been linked to it at
>>> compile time. That would explain why it works when you use msethread,
>>> because that one explicitly links to libpthread at compile time (via
>>> the imports in mselibc, I guess).
>>>
>>> Why dynamically loading libpthread causes problems is another
>>> question. Maybe somehow the cthreads unit loads a different ("wrong")
>>> copy of libpthread than the one the static linker uses when linking
>>> the program. Or, alternatively, maybe the static linker selects a
>>> different version of libc to link against if libpthread is also used
>>> (libc and libpthread are quite interwoven on GNU systems, even though
>>> they are separate libraries)."
>>>
>>>
>>> So...I don't understand exactly how can I fix it.
>>>
>>> Thanks for any help.
>>>
>>> Mariano
>>>
>>>
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20100328/631a666b/attachment-0001.htm


More information about the Vm-dev mailing list