在GDB的每一行上设置断点

sma*_*oun 9 gdb

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

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

进一步编辑 正如杰森在下面指出的那样,只要您使用si或者ni,而不仅仅是s(步骤)或n(下一步),您确实可以单步执行代码.ns做工精细,不过,如果源代码被编译-g,但它通过行源代码的步骤,而不是通过每一个汇编指令步进像nisi在没有-g编译的二进制做.

Jas*_*nda 7

使用si(stepi)来指导代码.您可以使用ni(nexti)来跳过您不感兴趣的库函数.如果您不小心插入其中一个函数,finish应该让您回到原来的例行程序.在这个级别工作的人通常将gdb设置为显示即将执行的下几个指令,例如disp/3i $pc.