我想知道我们是否可以在任何 C 或 C++ 应用程序中启用跟踪。
例如,使用 gcc 选项或小工具,我将启用跟踪,并将跟踪打印在控制台上或转储到文件中。
由于有很多文件和函数/类,我不想开始手动添加跟踪打印。
如果此类工具不可用,下一个选择是使用脚本并尝试在跟踪打印处添加。
strace
没有多大用处,因为它主要提供系统调用。
要跟踪函数进入/退出,您可以使用以下选项重新编译代码-finstrument-functions这样每次调用一个函数时,__cyg_profile_func_enter()
函数被调用,并且__cyg_profile_func_exit()
当函数返回时被调用。
您可以实现这些函数来跟踪被调用函数的地址,然后使用nm将地址转换为函数名称。
EDIT: etrace完成这一切:它提供了源代码__cyg_profile_func_enter()
and __cyg_profile_func_exit()
以及将地址写入命名管道的函数以及 Perl 和 Python 脚本来读取地址并使用函数名称和缩进进行实际跟踪。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)