我需要使用gdb跟踪程序的所有指令。 每次执行一条指令后,我都希望gdb调用一个指定的函数。
这是一项可行的工作吗?怎么做到这一点?
我搜索了互联网,发现gdb中的“stepi arg”命令可以执行arg指令。 但如何查找指令总数? 在每条指令之后,如何让gdb自动调用我的函数?
答案 0 :(得分:3)
cat t.c
int main() { int x=1; int y=2; int z=x+y; printf("%d",z); return 0; }
gcc t.c
gdb -q ./a.out
break main
run
(no debugging symbols found)...
Breakpoint 1, 0x0000000000400488 in main ()
set logging on
while 1
>stepi
>info registers
end
quit
现在检查gdb.log
:它应该包含您正在寻找的信息。
P.S。这不是一个讨论论坛。请不要将问题附加为“答案”。而是编辑您的原始问题以澄清它,或使用评论。
答案 1 :(得分:1)
由于高度或分页参数,GDB始终在执行期间打印“---要继续输入,要求q退出---”。
为了避免或禁用此功能,您必须在gdb提示符或.gdbinit文件中提供以下命令
设置高度0或设置分页