我想跟踪gcc编译的应用程序。通过跟踪,我的意思是我想要执行每条指令的查看地址。实现这一目标的最简单方法是什么?
答案 0 :(得分:2)
当然,最好的选择是使用GDB。
编译代码:
$ gcc -Wall m.c -o m
使用gdb跟踪它:
$ gdb m
> b main
> r
GDB会破坏您的输入功能:main
。
如果此类跟踪对您不利,请尝试在Linux上使用strace
,或在Solaris,BSD或Mac OS X上使用dtrace
。
答案 1 :(得分:0)
使用gdb,您可以打开日志记录:
set logging file my_log_filename.log
set logging on
并编写一个递归步宏:
define s
stepi
s
end
使用ptrace,只需ptrace(PTRACE_SINGLESTEP...)
,直到tracee结束或获得信号。
答案 2 :(得分:0)
我想你可以试试这个
strace -i program_name
注意:这将仅打印从所需程序调用的系统调用。