2010-01-13 140 views
2

我需要使用gdb来跟踪程序的所有指令。 每次执行指令后,我都希望gdb调用指定的函数。帮助gdb的stepi命令

这是一个可支配的工作吗?如何实现这一目标?

我搜索了互联网,发现“stepi arg”命令在gdb中可以执行arg指令。 但是如何找到总数的指令? 每条指令之后,如何让gdb自动调用我的函数?

+0

您确定要使用GDB这个?该函数是gdb函数还是程序中的函数?我想如果你指定一个你想要在每条指令之后执行的例子和一个你想要执行的程序的例子,它会更容易帮助你。 – Olof 2010-01-14 19:37:28

回答

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

由于高度或分页参数,GDB始终会在执行过程中输出“--- Type继续,或q退出---”。

为了避免或禁用此你必须给下面的命令或者在gdb提示或.gdbinit中

设定高度0或设置分页关闭