用于快速保存/加载断点的 gdb 别名

Phi*_*ldo 4 c debugging gdb

所以我对 gdb 很陌生,刚刚了解到您可以通过以下方式保存断点:

save breakpoints filename
Run Code Online (Sandbox Code Playgroud)

并加载它们

source filename
Run Code Online (Sandbox Code Playgroud)

这很好,但是因为这是我每次进入/退出 gdb 或多或少都计划做的事情,所以我想把它归结为一个快速的别名。

所以,在我的 ~/.gdbinit 中,我有几行

alias savebps = save breakpoints .gdb_bps
alias loadbps = source .gdb_bps
loadbps
Run Code Online (Sandbox Code Playgroud)

不幸的是,每次打开 gdb 时都会出现错误:

Invalid command to alias to: save breakpoints .gdb_bps
Run Code Online (Sandbox Code Playgroud)

我知道(/强烈认为)我的语法是正确的,因为我已经测试过了

alias savebps = help
Run Code Online (Sandbox Code Playgroud)

并且该别名有效。所以我认为将非 gdb 命令字(文件名)作为别名的一部分是一个问题。

所以,我的问题是这样的:

  • 我是不是完全愚蠢,并且已经有一个很好的方法来自动保存和维护我的断点列表?
  • GDB 可以在别名中包含文件名吗?还是我在寻找“别名”以外的东西?
  • 如果他们可以有文件名,我做错了什么?

哦,作为注释,'.gdb_bps' 是一个任意文件名,我只是想出了一个很好的不显眼的东西,很容易 .gitignore 和其他东西。

谢谢!

ks1*_*322 7

GDB 可以在别名中包含文件名吗?

好像没有 看起来别名不能有任何命令参数,而不仅仅是文件名。此别名也失败:

(gdb) alias spe = set print elements 0
Invalid command to alias to: set print elements 0
Run Code Online (Sandbox Code Playgroud)

还是我在寻找“别名”以外的东西?

是的,您可以改用用户定义的命令

(gdb) define savebps
Type commands for definition of "savebps".
End with a line saying just "end".
>save breakpoints .gdb_bps
>end
(gdb) 
(gdb) define loadbps
Type commands for definition of "loadbps".
End with a line saying just "end".
>source .gdb_bps
>end
(gdb) 
Run Code Online (Sandbox Code Playgroud)

  • 精彩的!谢谢!对于那些想知道的人,您可以将定义放在 .gdbinit 行中,而没有您期望的提示。 (4认同)