[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


From: Christian Stieber
Subject: Debugging?
Date: Sat, 18 Mar 2006 18:47:57 +0100
User-agent: Mutt/1.3.25i


well, I recently found gnustep, and decided to give it a try. On a
Linux box, I got the current version of gcc (4.1; since I suspected
that trying to use my old 2.95 installation wouldn't do much good); I
also installed the gnustep base libraries, and restarted my current
project using objective-c/gnustep.

Eventually I figured out how to compile and link with the gnustep
libraries (still getting bugged warnings, but I'm ignoring these for
now) --- it seemed easier to do it that way, rather than trying
to analyse the gnustep make stuff to see how to incorporate these
into my own project.

But then I decided to take the next step --- getting a clean compile,
so I could actually try to debug the stuff I already have before

I got the current gdb (6.3) and ran it --- but currently I'm stuck
here: for some reason, gdb singlesteps not only through my code, but
also through the runtime system. So it looks like this:

------------------------------ Cut ------------------------------

(gdb) break main
Breakpoint 1 at 0x804a860: file MyProject/Main.m, line 17.
(gdb) run test
Starting program: /tmp/MyProject test
[Thread debugging using libthread_db enabled]
[New Thread 1024 (runnable)]
[Switching to Thread 1024 (runnable)]

Breakpoint 1, main (argc=0, argv=0x8049111) at MyProject/Main.m:17
17      {
(gdb) n
0x08049914 in __i686.get_pc_thunk.bx ()
(gdb) n
Single stepping until exit from function __i686.get_pc_thunk.bx,
which has no line number information.
main (argc=2, argv=0xbffff3d4) at MyProject/Main.m:20
20        MyProject_GlobalMutex=[[NSLock alloc] init];
(gdb) n
22        for (i=1; i<argc; i++)
(gdb) n
26            Userparam=[[NSString alloc] initWithCString:argv[i]];
(gdb) n
27            if (![MyProject_Provider MyProject_Provider_Start:Userparam])
(gdb) print-object Userparam
2006-03-18 18:26:30.605 MyProject[3042] autorelease called without pool for 
object (80b77f8) of class NSObject in thread <NSThread: 805f2e0>
(gdb) s
objc_get_class (name=0x8050cd0 "MyProject_Provider") at 
252       CLASS_TABLE_HASH (length, hash, class_name);
Current language:  auto; currently c
(gdb) s
491     {
(gdb) s
252       CLASS_TABLE_HASH (length, hash, class_name);
(gdb) s
254       node = class_table_array[hash];
(gdb) s
256       if (node != NULL)
(gdb) s
260               if (node->length == length)

------------------------------ Cut ------------------------------

It seems I'm missing some settings (why isn't that the default?) to tell
gdb to not step into the runtime system --- I don't want to singlestep
through "class.c" whenever I call a method in my program, as this
clutters the debugging session with tons of irrelevant/useless stuff...

The __i686.get_pc_thunk.bx at the beginning is pretty much the same
crap, but I could live with that.

The obvious step I took was to remove the gcc sourcedir (don't need
that anyway), but it still steps through class.c --- it just doesn't
give sourcecode anymore (big surprise :-))

So, what are the "recommended" commands/options/whatever to setup
a usable objective-c debugging session?

Thanks for any assistance,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]