由gcc编译的跟踪应用程序

时间:2011-10-29 18:53:36

标签: c linux gcc x86

我想跟踪gcc编译的应用程序。通过跟踪,我的意思是我想要执行每条指令的查看地址。实现这一目标的最简单方法是什么?

3 个答案:

答案 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

注意:这将仅打印从所需程序调用的系统调用。