(gdb) start will try to run the entire program if it fails to set the breakpoint on main. (Of course, arguably it's wrong to break specifically on main, since there may be static constructors that run earlier ...) $ gdb /bin/true GNU gdb (GDB) 7.6 (Debian 7.6-5) Copyright (C) 2013 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 "x86_64-linux-gnu". For bug reporting instructions, please see: <http://www.gnu.org/software/gdb/bugs/>... Parsing .gdbinit Reading symbols from /bin/true...(no debugging symbols found)...done. (gdb) start Function "main" not defined. Make breakpoint pending on future shared library load? (y or [n]) n Starting program: /bin/true warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? [Inferior 1 (process 31851) exited normally] (gdb) start Function "main" not defined. Make breakpoint pending on future shared library load? (y or [n]) y Temporary breakpoint 1 (main) pending. Starting program: /bin/true warning: Could not load shared library symbols for linux-vdso.so.1. Do you need "set solib-search-path" or "set sysroot"? [Inferior 1 (process 31855) exited normally]
Thanks for filing this. It's annoyed me before too. > (Of course, arguably it's wrong to break specifically on main, since there > may be static constructors that run earlier ...) That's how the command is defined: (gdb) help start Run the debugged program until the beginning of the main procedure. You may specify arguments to give to your program, just as with the "run" command. I once hacked a patch to add a "create" command, that creates the inferior process, but leaves it held at the entry point. This was like setting a break at the entry point (b *_start; run), but easier, with no breakpoint at all: https://github.com/palves/gdb/commit/be1bc6c802bc5f07b648f45901120dae2278c330 Never got myself to gather enough strength to submit and face the potential bikeshed. :-)
Does the 'starti' command satisfy to resolve this ticket?
(In reply to Hannes Domani from comment #2) > Does the 'starti' command satisfy to resolve this ticket? starti definitely addresses comment #1 but I wonder if it would be better for 'start' to fail if no appropriate 'main' can be found. After all in this situation you could get the same behavior form 'run'.