c++ - 如何打印 Linux 下 C++ 程序中调用的函数?

标签 c++ c debugging trace

我想要的是通过 Doxygen 等静态代码分析获得的内容和使用 GDB 时可以看到的堆栈帧的组合。我知道我正在调试哪个有问题的函数,并且我想查看引导执行该函数调用的函数调用的邻域。例如,运行一个简单的 HelloWorld!会输出类似:

main:
   Greeter::Greeter()
   Greeter::printHello()
   Greeter::printWorld()

表示从主函数中调用了构造函数,然后调用了 printHello 和 printWorld 函数。请注意,在 GDB 中,如果我在 printWorld 处中断,我将无法在堆栈帧中看到 printHello 被调用。

关于如何跟踪函数调用而不经历在无数源文件中插入日志消息的痛苦,有什么想法吗?

谢谢!!

最佳答案

-finstrument-functions option to gcc 指示编译器在每次函数进入和退出时调用用户提供的分析函数。

您可以使用它来编写一个仅记录每个函数进入和退出的函数。

关于c++ - 如何打印 Linux 下 C++ 程序中调用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4749074/

相关文章:

c++ - 在 CentOS 上使用 OpenGL 支持从源代码编译 Qt 4.8.3

c++ - 使用 C_LOC() 将指向一维 Fortran 数组的指针传递给 C++ 会导致垃圾值

C 在函数中分配动态内存 - 相同的结果

c - 如何在保留旧内容的同时将动态数组的大小加倍

android - ADP同时远程调试两台设备

c - 调试错误 "Werror=unused-but-set-variable"

c++ - 将人类可读的日期转换为毫秒并在不丢失信息的情况下再次返回

c++ - 在 C++ 中使用模板元编程从函数类型中提取调用约定

c - 处理器寄存器 - 应用程序变量关联

php - 如何在 PHP 中跟踪程序的每个 "step"?