GDB breakpoints
Solution 1
From man gdb(1):
-x file
Execute GDB commands from file file.
You could then put your breakpoints in a file:
break [file:]function
break [file:]function
...
Solution 2
You can put all of the commands you want into a .gdbinit
file that lives in the same directory as the executable you are debugging.
Something like:
b somefile.c:128
b otherfile.c:33
Should work just fine.
Yes, the -x
command line argument will allow you to execute arbitrary files at GDB startup, but maintaining a .gdbinit
file for each project means that the file is executed automatically (without the need to specify a filename). Also, you can easily add the project-specific .gdbinit
file to your source control, which means that all of your team members can use the same debugging facilities.
Solution 3
Besides using an external file, you can also just keep GDB open: If the binary under GDB changes, it will reload the binary and libraries without losing your breakpoints the next time you run.
Solution 4
The save breakpoints command is new as of GDB 7.2 (2011-08-23). After you've saved the breakpoints to a file you can read them into a later GDB session using the source command and then the next time you run GDB you can use the -x <filename>
option.
save breakpoints <filename>
Save all current breakpoint definitions to a file suitable for use
in a later debugging session. To read the saved breakpoint
definitions, use the `source' command.
Solution 5
Or use:
gdb --command=commands.gdb ./a.out
where commands.gdb
is a text file with your breakpoints.
--command
is probably the same as -x
Sachin Khot
Updated on December 02, 2020Comments
-
Sachin Khot over 3 years
I have a list of breakpoints which I want to add each time I debug a particular program.
Is there a way I can put all of the breakpoint information in a file and use it at the start of each debug session? In other words can I provide a script file with breakpoint information to GDB before I give the 'run' command?
-
Can Bal over 12 yearsI had the same version and it wasn't working. I found out that this feature is added with gdb version 7.2. If you compile the newer version it works.