From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10052 invoked by alias); 22 Jul 2010 00:34:31 -0000 Received: (qmail 10044 invoked by uid 22791); 22 Jul 2010 00:34:30 -0000 X-SWARE-Spam-Status: No, hits=-1.8 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,TW_SM X-Spam-Check-By: sourceware.org Received: from mail-pw0-f41.google.com (HELO mail-pw0-f41.google.com) (209.85.160.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 22 Jul 2010 00:34:26 +0000 Received: by pwi8 with SMTP id 8so6760558pwi.0 for ; Wed, 21 Jul 2010 17:34:24 -0700 (PDT) Received: by 10.114.103.6 with SMTP id a6mr1458270wac.213.1279758852885; Wed, 21 Jul 2010 17:34:12 -0700 (PDT) Received: from [172.16.146.137] ([60.12.143.24]) by mx.google.com with ESMTPS id x9sm86174764waj.3.2010.07.21.17.34.08 (version=SSLv3 cipher=RC4-MD5); Wed, 21 Jul 2010 17:34:10 -0700 (PDT) Message-ID: <4C47923A.9070102@gmail.com> Date: Thu, 22 Jul 2010 00:34:00 -0000 From: asmwarrior User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.7) Gecko/20100713 Thunderbird/3.1.1 MIME-Version: 1.0 To: asmwarrior CC: gdb@sourceware.org Subject: Re: windows gdb.exe, setting breakpoints before debugging cause extremely slow loading References: <4C46FCDD.2000704@gmail.com> In-Reply-To: <4C46FCDD.2000704@gmail.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2010-07/txt/msg00080.txt.bz2 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