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