2010-06-20 89 views
8

我有一些非常大的C文件,它有很多函数。我需要在运行时跟踪执行路径。我无法通过调试来追踪它,因为它是目前在qemu上运行并执行大量二进制翻译的管理程序代码。将printf添加到文件中所有函数的起始处

任何人都可以指向Perl或Python中的某些脚本,它可以在所有函数启动时添加一个printf,文本可能类似于“我在<函数名称>”?

回答

23

编译时只需将-finstrument-functions传递给gcc。有关详细信息,请参阅gcc(1)手册页。

+1

对问题精神的完美回答。 – 2010-06-20 09:12:13

+2

+1。只需添加,然后输入代码可能如下所示: printf(“功能详细信息:%s \ n”,____PRETTY_FUNCTION____); ____PRETTY_FUNCTION____是预定义的宏,提供一个包含函数名称+签名的字符串。 – Fanatic23 2010-06-20 10:52:03

+0

注意:您需要手动实现每个跟踪函数,或者使用像etrace这样的工具来解析ELF并为您生成这些调用:https://stackoverflow.com/questions/6176284/why-doesnt-finstrument-functions - 工作换我 – 2017-11-05 11:06:36

相关问题