任何人都可以指导我如何构建c代码的调用树如果任何人可以建议我使用func_tree的任何开源工具但是它没有在宏下显示宏函数调用和函数...... ??? ??
答案 0 :(得分:0)
在编译代码之前,C预处理器会扩展您的所有宏。这意味着即使编译器也无法查看宏定义。不幸的是,这意味着在函数调用跟踪中不可能包含宏。
根据您对运行时环境的了解程度,有时您可以反向计算堆栈跟踪帧距离堆栈当前位置的位置。不幸的是,这通常是一个技巧,其中确切的细节仅适用于一个环境。您需要为每个环境重新执行堆栈语义的发现。 Here is project that performs such a technique,但无法知道它对您是否有用。
请注意,这种技术可能也不会显示任何编译器内嵌,因为当编译器将等效的功能代码放入调用块时,函数调用将被重写为不存在。
如果您无法在特定环境中找到与Google类似的项目,那么您可能需要自己编写一个项目。如果这超出了您的范围,您需要调查是否值得学习环境的低级细节,或者是否更好地执行更强大的日志记录。