所以我对 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_bps' 是一个任意文件名,我只是想出了一个很好的不显眼的东西,很容易 .gitignore 和其他东西。
谢谢!
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)