Ping? Is has been a couple of months, so below are some examples of what this patch enables. Before, this was possible (we have symbols loaded): >gdb ./gdb/gdb --quiet (gdb) b foobar Function "foobar" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (foobar) pending. (gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y foobar (gdb) But this was not (no symbols loaded):: >gdb --quiet (gdb) b main No symbol table is loaded. Use the "file" command. (gdb) With the patch installed, this is now possible (no symbols loaded): >./gdb/gdb --quiet (gdb) b main No symbol table is loaded. Use the "file" command. Make breakpoint pending on future shared library load? (y or [n]) y Breakpoint 1 (main) pending. (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y main Now load symbols: (gdb) file gdb/gdb Reading symbols from /home/pedro/gdb/pending/build/gdb/gdb...done. And the pending breakpoint is resolved using the normal pending breakpoint mechanisms: (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x000000000044ee37 in main at ../../src/gdb/gdb.c:28 (gdb) r Starting program: /home/pedro/gdb/pending/build/gdb/gdb [Thread debugging using libthread_db enabled] Breakpoint 1, main (argc=1, argv=0x7fffffffe458) at ../../src/gdb/gdb.c:28 28 memset (&args, 0, sizeof args); (gdb) Retested on x86_64-unknown-linux-gnu, no regressions, new test passes. -- Pedro Alves On Thursday 03 April 2008 20:31:11, Pedro Alves wrote: > Hi all, > > This is a follow up to a discussion that started a few months ago > related to setting breakpoints in shared lib when you don't have > any symbols in the main executable. This is more visible > on Windows when you want debugging a dll you build with gcc that > is loaded by a stripped application built with MSVC. We can't > debug the MSVC built executable, but we should be able > to debug the code in the dll. Users should be able to set > breakpoints in the dll before it gets loaded, but gdb refuses > to, claiming: > > (gdb) b func_in_dll > No symbol table is loaded. Use the "file" command. > > Original patch and discussion here: > [Debugging a Vlc dll with GDB.] > http://sourceware.org/ml/gdb-patches/2007-12/msg00112.html > > Coincidently, Matt Rice was asking on IRC why he couldn't > set pending breakpoints in his .gdbinit file, which > made me come back to the issue. It's exactly the same > checks in gdb. This patch should also fix his use case. > > At the time of that thread, I proposed a patch the removes the > limitation, by letting the user set pending breakpoints even > if no symbols are loaded yet, but I also changed the > messages we output, but in a form not everyone liked. As > we were discussing then, the messages gdb prints aren't > 100% accurate -- if we let the user set pending breakpoints > before an exec file is loaded, the question we ask is still > "Make breakapoints pending on future shared library load?". I > spent quite some time staring at the messages we output, and > trying to come up with a good generic one, but the ones > I came up with, still had this feeling they would be > rejected again. :-) > > So, this time I propose a code change only. Let's make > message changes separately. > > Here goes the patch. Testcase included. Tested on > x86_64-unknown-linux-gnu.