0

谁能指导我如何构建c代码的调用树如果有人可以建议我任何我使用过func_tree但它没有显示宏函数调用和宏下的函数的开源工具...?????

4

1 回答 1

0

就在您编译代码之前,C 预处理器会扩展您的所有宏。这意味着即使编译器也看不到宏定义。不幸的是,这意味着不可能在函数调用跟踪中包含宏。

根据您对运行时环境的了解程度,有时您可以从堆栈中的当前位置反向计算堆栈跟踪帧的位置。不幸的是,这通常是一个技巧,确切的细节只适用于一个环境。您需要为每个环境重新执行堆栈语义的发现。 这是执行这种技术的项目,但无法知道它是否对您非常有用。

请注意,这种技术也可能不会显示任何编译器内联,因为当编译器将等效的功能代码放入调用块时,函数调用被重写为不存在。

如果您无法在 Google 中找到适合您特定环境的类似项目,那么您很可能必须自己编写一个。如果这超出了您的能力范围,您将需要调查是否值得学习环境的低级细节,或者执行更强大的日志记录是否更好。

于 2012-02-10T16:10:36.493 回答