GDB breakpoints

浪尽此生 提交于 2019-11-30 11:21:44

问题


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?


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



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

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.




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




回答4:


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.



回答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




回答6:


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



来源:https://stackoverflow.com/questions/500967/gdb-breakpoints

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