gdb - 在GDB中的每一行设置断点

标签 gdb

有没有办法用GDB在代码的每一行设置断点?显然我不想为每一行都点击 b *addr ,所以我想知道是否有一种快速的方法来做到这一点。

编辑 请注意,我正在运行由其他人创建的二进制文件,并且我无权访问源代码。不幸的是,该二进制文件尚未使用 -g 标志进行编译。因此,我不能单步执行代码中的每一行。

进一步编辑 正如下面 Jason 指出的,只要使用 sini,您确实可以单步执行代码,而不是简单地使用 s (步骤)或n(下一步)。不过,如果源代码是使用 -g 编译的,则 ns 工作正常,但它会逐步执行源代码行,而不是逐步执行每个汇编指令就像 nisi 在没有 -g 的情况下编译的二进制文件中所做的那样。

最佳答案

使用si (stepi) 来指示单步执行代码。您可以使用 ni (nexti) 跳过您不感兴趣的库函数。如果您不小心进入其中一个函数,请finish应该让你回到原来的生活习惯。在这个级别工作的人通常将 gdb 设置为显示接下来要执行的几条指令,例如disp/3i $pc

关于gdb - 在GDB中的每一行设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410941/

相关文章:

shell - 如何在 GDB 中运行 .sh(shell 脚本)文件?

c - 程序收到信号 SIGPIPE,Broken pipe

c - 运行 'finish' 命令时 GDB 退出

c++ - 如何判断函数是否可重入

python - gdb python : How to redirect the output of a gdb command to a variable?

c++ - CentOS 上的 GDB 忽略 gdbinit 文件

c - 如何根据给定的内存内容重建 C 结构体?

c++ - 无法为 dynamic_cast 确定值的最派生类型

Linux:在 CentOS v7 上加载调试符号

c++ - NetBeans 8.2 上的 GDB 未启动 (Windows)