This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
Re: windows gdb.exe, setting breakpoints before debugging cause extremely slow loading
- From: asmwarrior <asmwarrior at gmail dot com>
- To: asmwarrior <asmwarrior at gmail dot com>
- Cc: gdb at sourceware dot org
- Date: Thu, 22 Jul 2010 08:35:06 +0800
- Subject: Re: windows gdb.exe, setting breakpoints before debugging cause extremely slow loading
- References: <4C46FCDD.2000704@gmail.com>
On 3:59, asmwarrior wrote:
Hi, all, I'm a windows gdb user, I have used both official MinGW
gdb.exe and gdb.exe build myself.
I found that when I set a breakpoint before loading or after loading
has much different result.
I use GDB.exe under Codeblocks, here is the debugger log when I try to
debug something:
----------------------------------------------------------------------------
Situation works badly:
I just set breakpoint before I start "run" the debugee
>>>>>>cb_gdb:
> break
"E:/code/cb/cc_branch/src/plugins/codecompletion/parser/parserthread.cpp:471"
No source file named
E:/code/cb/cc_branch/src/plugins/codecompletion/parser/parserthread.cpp.
Breakpoint 1
("E:/code/cb/cc_branch/src/plugins/codecompletion/parser/parserthread.cpp:471)
pending.
>>>>>>cb_gdb:
> run
Now, it will take about 1 and a half minutes to start the debugee.
----------------------------------------------------------------------------
But If I do *not* set any breakpoint before running, then ,the loading
stage is quite fast(about 10 second), after that I can still set
breakpoint and all the breakpoint works fine.
Not only me find the problem, see the message posted in Codeblocks
forum by One of Codeblocks developers Pecan:
http://forums.codeblocks.org/index.php/topic,12951.msg87332.html#msg87332
Does this a gdb bug?
Thanks
asmwarrior(ollydbg from codeblocks forum)
I personally think there is something wrong with "pending breakpoint"
when we load a shared dll library.
As my initial guess, When after loading some new shared libraries, gdb
need to check if the pending breakpoint can be set to the new libraries.
if Yes, then the these breakpoint can translated from "pending
breakpoint" to "real breakpoint".
return to my problem:
I guess there are some recursive search algorithm for pending
breakpoints after some new shared library debug information is loaded.
Can some one give me a direction that how does gdb treat with "pending
breakpoint" after loading some new shared libraries?
I have read the gdb source "breakpoint.c" there:
struct breakpoint *b
if b->loc is NULL, which means it is a pending breakpoint. So, where and
when will be this pointer member filled.
Thanks
asmwarrior