有没有办法用GDB在代码的每一行设置断点?显然我不想为每一行都点击 b *addr
,所以我想知道是否有一种快速的方法来做到这一点。
编辑 请注意,我正在运行由其他人创建的二进制文件,并且我无权访问源代码。不幸的是,该二进制文件尚未使用 -g 标志进行编译。因此,我不能单步执行代码中的每一行。
进一步编辑
正如下面 Jason 指出的,只要使用 si
或 ni
,您确实可以单步执行代码,而不是简单地使用 s
(步骤)或n
(下一步)。不过,如果源代码是使用 -g 编译的,则 n
或 s
工作正常,但它会逐步执行源代码行,而不是逐步执行每个汇编指令就像 ni
或 si
在没有 -g 的情况下编译的二进制文件中所做的那样。
最佳答案
使用si
(stepi
) 来指示单步执行代码。您可以使用 ni
(nexti
) 跳过您不感兴趣的库函数。如果您不小心进入其中一个函数,请finish
应该让你回到原来的生活习惯。在这个级别工作的人通常将 gdb 设置为显示接下来要执行的几条指令,例如disp/3i $pc
。
关于gdb - 在GDB中的每一行设置断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13410941/