如何从调用图中省略内置函数

How to omit built-in functions from call graph

本文关键字:内置 函数 中省 调用      更新时间:2023-10-16

我使用gcc生成了C/c++程序的调用图,但是该图包含了许多内置函数,如strcmp, fprintf等,我对此不感兴趣。是否有任何gcc选项可以帮助省略这些函数?我知道埃及有一个选项——省略,但这需要用户事先指定他们知道的函数列表。这意味着,如果我想删除上面所有的内置函数,我需要有一个完整的函数列表,我不知道从哪里得到。

谢谢。

标准库函数的完整列表可以在语言标准中找到。但是,该列表不包括helper和特定于编译器的函数。

参见1999年C标准的Annex B/Library summary

如果你没有这个标准,你可以在网上找到它的草稿。

您可以自己指定检测功能。有关如何使用的更多信息,请参阅此链接。实现插入函数,允许您在每个函数调用之前指定将被调用的函数,并且将被调用函数的地址和调用它的地址传递给它。

之后,您可以使用addr2line工具转换来自已检测运行的地址。这样就可以提取函数并对其进行过滤。您需要解析文本文件并自己构建调用图,但dot语言非常容易上手。