在 emacs 中执行多个 gdb 命令
execute multiple gdb commands in emacs
如果有一种方法可以在 gdb 中本地执行此操作,例如 'load script',那么请忽略此问题的 emacs 部分。
我经常在一个相当高的循环中执行以下操作:
- 启动 gdb(如果有帮助,在 emacs 中启动)。
- 设置几个断点(每次都设置相同的断点)。通常必须输入 "y" 我想在将来加载共享库时设置断点。
- 设置一些观察点(相同的观察点)
- 调试一下。
- 关闭 gdb。
- 转到 1.
因此,如果我可以保存写入缓冲区或文件的命令,并在每次启动 gdb 时加载并执行该组命令,那将使我的生活变得更加轻松。如果我不必输入 "y" 来确认 gdb 应该在未来的库加载时使断点挂起,那么奖励积分。
如果我能保存所有当前断点(按名称而不是按地址,因为那些可能会改变),那将是非常棒的。
好吧,我想你可以通过 set history save
保存命令历史记录
同题型的正确解释如下link
How can I make gdb save the command history?
您可以将所有命令放在一个文件中,然后使用参数 -x /path/to/file
调用 gdb。任何问题的答案都将默认为安全...
$ cat init.gdb
break write
$ gdb -q -x init.gdb a.out
Reading symbols from a.out...done.
Function "write" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N;
input not from terminal]
(gdb)
但在这种情况下,您希望答案为 y
。通常可以设置一个 gdb 变量来覆盖默认选择。这里是 set breakpoint pending on
.
$ cat init2.gdb
set breakpoint pending on
break write
$ gdb -q -x init2.gdb a.out
Reading symbols from a.out...done.
Function "write" not defined.
Breakpoint 1 (write) pending.
(gdb)
要保存断点,使用save breakpoints
命令。
(gdb) save breakpoints bp.gdb
Saved to file 'bp.gdb'.
(gdb) quit
$ cat bp.gdb
break write
除了上述之外,gdb会自动加载一个脚本文件。确切加载哪个文件取决于 gdb 版本,但在旧版本中,它读取当前目录中的 .gdbinit;在较新的版本中将显示为“$EXE-gdb.gdb”,其中 $EXE 是您正在调试的程序的名称。有关所有详细信息,请参阅手册。
如果有一种方法可以在 gdb 中本地执行此操作,例如 'load script',那么请忽略此问题的 emacs 部分。
我经常在一个相当高的循环中执行以下操作:
- 启动 gdb(如果有帮助,在 emacs 中启动)。
- 设置几个断点(每次都设置相同的断点)。通常必须输入 "y" 我想在将来加载共享库时设置断点。
- 设置一些观察点(相同的观察点)
- 调试一下。
- 关闭 gdb。
- 转到 1.
因此,如果我可以保存写入缓冲区或文件的命令,并在每次启动 gdb 时加载并执行该组命令,那将使我的生活变得更加轻松。如果我不必输入 "y" 来确认 gdb 应该在未来的库加载时使断点挂起,那么奖励积分。
如果我能保存所有当前断点(按名称而不是按地址,因为那些可能会改变),那将是非常棒的。
好吧,我想你可以通过 set history save
同题型的正确解释如下link
How can I make gdb save the command history?
您可以将所有命令放在一个文件中,然后使用参数 -x /path/to/file
调用 gdb。任何问题的答案都将默认为安全...
$ cat init.gdb
break write
$ gdb -q -x init.gdb a.out
Reading symbols from a.out...done.
Function "write" not defined.
Make breakpoint pending on future shared library load? (y or [n]) [answered N;
input not from terminal]
(gdb)
但在这种情况下,您希望答案为 y
。通常可以设置一个 gdb 变量来覆盖默认选择。这里是 set breakpoint pending on
.
$ cat init2.gdb
set breakpoint pending on
break write
$ gdb -q -x init2.gdb a.out
Reading symbols from a.out...done.
Function "write" not defined.
Breakpoint 1 (write) pending.
(gdb)
要保存断点,使用save breakpoints
命令。
(gdb) save breakpoints bp.gdb
Saved to file 'bp.gdb'.
(gdb) quit
$ cat bp.gdb
break write
除了上述之外,gdb会自动加载一个脚本文件。确切加载哪个文件取决于 gdb 版本,但在旧版本中,它读取当前目录中的 .gdbinit;在较新的版本中将显示为“$EXE-gdb.gdb”,其中 $EXE 是您正在调试的程序的名称。有关所有详细信息,请参阅手册。