自动跟踪程序执行

har*_*ari 7 c c++ trace

我想知道我们是否可以在任何C或C++应用程序中启用跟踪.

例如,使用gcc选项或小工具,我将启用跟踪,并在控制台上打印跟踪或转储到文件.

由于有很多文件和函数/类,我不想手动开始添加跟踪打印.

如果此类工具不可用,则下一步选择使用脚本并尝试在跟踪打印时添加.

strace 没有多大用处,因为它主要给出了系统调用.

phi*_*ant 11

要跟踪函数的进入/退出,可以使用该选项重新编译代码,-finstrument-functions以便每次调用函数时,都会调用__cyg_profile_func_enter()函数,并__cyg_profile_func_exit()在函数返回时调用.

您可以实现这些函数来跟踪被调用函数上的地址,并使用nm将地址转换为函数名.

编辑:etrace完成所有这些:它提供了__cyg_profile_func_enter()和/ __cyg_profile_func_exit()和函数的源代码,这些函数将地址写入命名管道,Perl和Python脚本读取地址并使用函数名称和缩进进行实际跟踪.