GDB:运行不带符号的 cpp 进程调试
GDB: running cpp process debugging without symbols
运行应用程序的Linux系统。此应用程序是没有任何调试符号的 cpp 二进制文件。一些如何这个应用程序使用100%的CPU。想调试为什么它无限运行。如果我停止并用调试符号替换二进制文件,则问题可能无法重现。
因此,在另一个环境中运行具有调试符号的同一应用程序。在这里它运行良好。
我可以比较它们(有和没有调试符号二进制文件(并使用 GDB 推断出问题所在吗?
此应用程序是没有任何调试符号的 cpp 二进制文件
你不需要任何调试符号来了解它花费的时间,你只需要应用程序没有被完全剥离(大多数二进制文件不是(。
使用perf record -p $pid
收集 CPU 配置文件,然后perf report
对其进行分析。
如果应用程序已完全剥离,您仍然可以使用perf record
来收集程序计数器值,然后perf record --symfs ...
将其指向应用程序的未剥离副本。文档在这里。
当心:剥离和未剥离的副本都必须使用完全相同的构建标志构建,否则你会得到垃圾。最佳做法是始终将未剥离的副本保存为生成过程的一部分。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- Linux的Cpp上的计时器
- boost::进程间消息队列引发错误
- 如何运行位于boost/libs/python/example/tutorial目录中的hello.cpp和Jamfil
- 命名空间中具有.h和.cpp文件的类
- 内置函数可查看CPP中的成员变量
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- Cpp-Tuple使用带有变量的get
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 是否可以通过C++扩展强制多个python进程共享同一内存
- C++-试图将函数指针推回到另一个CPP文件中的矢量时出错
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 如何通过cpp程序运行shell脚本
- IPC使用多个管道和分支进程来运行Python程序
- 使用2个键的cpp-stl::优先级队列排序不正确
- 异常属于C++中的线程还是进程
- GDB:运行不带符号的 cpp 进程调试
- Python 子进程.Popen 在 g++ 中编译,自动添加.cpp文件
- CPP GDB 崩溃,没有核心和 GDB 附加到工作进程