我使用 gcc 生成了我的 C/C++ 程序的调用图,但是该图包含许多我不感兴趣的内置函数,例如 strcmp、fprintf 等。是否有任何 gcc 选项可以帮助省略这些类型功能?我知道埃及有一个选项 --omit,但这需要用户指定他们事先知道的函数列表。这意味着如果我想删除上面的所有内置函数,我需要有一个完整的函数列表,我不确定从哪里获得。
谢谢。
我使用 gcc 生成了我的 C/C++ 程序的调用图,但是该图包含许多我不感兴趣的内置函数,例如 strcmp、fprintf 等。是否有任何 gcc 选项可以帮助省略这些类型功能?我知道埃及有一个选项 --omit,但这需要用户指定他们事先知道的函数列表。这意味着如果我想删除上面的所有内置函数,我需要有一个完整的函数列表,我不确定从哪里获得。
谢谢。
标准库函数的完整列表可以在语言标准中找到。但是,该列表不包括帮助程序、特定于编译器的函数。
例如,参见Annex B/Library summary
1999 年的 C 标准。
如果您没有标准,请在线获取其草稿。
您可以自己指定检测功能。有关如何操作的更多信息,请参阅此链接。实现 intrumentation 函数,让您指定将在每个函数调用之前调用的函数,并将传递被调用函数的地址和调用它的地址。
之后,您可以使用该addr2line
工具从检测的运行中转换地址。这使您可以提取函数并过滤它们。您需要自己解析文本文件并构建调用图,但是这种dot
语言很容易上手。