GDB breakpoints

爷,独闯天下 提交于 2019-11-29 23:51:26

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
...

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.

Edit: 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 utilize the same debugging facilities.

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.

The save breakpoints command is new as of gdb 7.2. 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.
Johan

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

The documentation of GDB claims that a command "save breakpoints" and "source" can be used: http://sourceware.org/gdb/current/onlinedocs/gdb/Save-Breakpoints.html#Save-Breakpoints. However this doesn't work on my gdb (7.1-ubuntu).

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!