c++ - 如何防止 GDB 加载(大型)库的调试符号?

标签 c++ qt gdb shared-libraries debug-symbols

在调试 Qt 5 应用程序时,有时我对 Qt 5 的内部结构不感兴趣,而是对应用程序本身的结构感兴趣。因此我不需要加载 Qt 5 库的所有调试符号,因为它们需要几秒钟才能加载。

是否可以阻止 GDB 加载这些 Qt 5 库的符号,同时保留我的应用程序的调试符号?

最佳答案

Is it possible to prevent GDB from loading symbols for these Qt 5 libraries while keeping the debugging symbols for my application?

是的。

正如 Richard Critten 的评论所提到的,设置 auto-solib-add 0 将阻止加载所有 共享库的符号,然后您可以使用 sharedlibrary 手动添加文件命令(接受正则表达式)。如果省略此正则表达式,则会加载所有共享库。

然而,这将阻止自动加载所有 符号(不仅仅是调试符号),并且还会阻止自动加载系统库的符号,这通常需要展开堆栈。

更好的方法可能是在某处保存一份包含完整调试信息的 Qt5 库拷贝,例如~/Qt5-debug/,然后在原始库上运行strip -g。这样,您将获得所有库的符号信息,在极少数情况下,当您实际需要 Qt5 的完整调试信息时,您仍然可以使用 GDB 文件 ~/Qt5-debug/libQt5Core.so 来完成。 5.2 或类似命令。

本章GDB Files GDB 手册中有更多关于使用此类单独调试符号的文档。

关于c++ - 如何防止 GDB 加载(大型)库的调试符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31763639/

相关文章:

c++ - VS2012 到 VS2015 迁移

c++ - 如果基类有/没有附加虚拟方法,为什么非虚拟方法(从派生类调用时)的行为会发生变化?

c++ - 将单元格从 QTableView 拖到外部应用程序

gdb - 如何在 GNU GAS ELF 输出中制作 GDB 可以破解但不算作函数的本地标签?

android - 如何在 Android 上使用 GDB 运行 Dalvik 可执行文件?

c++ - 什么软件在设计/规划一个新的大型个人项目时有用?

c++ - 按 C++ 键时随时调用函数

C++ - 临时变量及其生命周期

c++ - Qt : send Key_Return and Key_Delete events

c++ - 使用 gdbserver 从 clion 调试 jni 库