gpt4 book ai didi

c++ - 在 emacs 中执行多个 gdb 命令

转载 作者:行者123 更新时间:2023-11-27 23:00:12 25 4
gpt4 key购买 nike

如果有一种方法可以在 gdb 中本地执行此操作,例如“加载脚本”,那么请忽略此问题的 emacs 部分。

我经常在一个相当高的循环中执行以下操作:

  1. 启动 gdb(如果有帮助,在 emacs 中)。
  2. 设置几个断点(每次都是相同的断点)。通常必须输入“y”我想在将来的共享库加载时设置断点。
  3. 设置一些观察点(相同的观察点)
  4. 调试一段时间。
  5. 关闭 gdb。
  6. 转到 1.

因此,如果我可以保存写入缓冲区或文件的命令,并在每次启动 gdb 时加载并执行该组命令,那将使我的生活变得更加轻松。如果我不必输入“y”来确认 gdb 应该在未来的库加载时设置断点,那么奖励积分。

如果我可以保存所有当前断点(按名称而不是按地址,因为那些可能会更改),那将是非常棒的。

最佳答案

您可以将所有命令放在一个文件中,并使用参数 -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)

要保存断点,请使用保存断点命令。

(gdb) save breakpoints bp.gdb
Saved to file 'bp.gdb'.
(gdb) quit
$ cat bp.gdb
break write

关于c++ - 在 emacs 中执行多个 gdb 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28482467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com