Lek*_*eyn 5 c++ qt gdb shared-libraries debug-symbols
在调试Qt 5应用程序时,我有时对Qt 5的内部不感兴趣,而是对应用程序本身的结构感兴趣.因此,我不需要加载Qt 5库的所有调试符号,因为这些符号需要几秒钟才能加载.
是否可以阻止GDB为这些Qt 5库加载符号,同时保留我的应用程序的调试符号?
是否可以阻止GDB为这些Qt 5库加载符号,同时保留我的应用程序的调试符号?
是.
正如Richard Critten的评论所提到的,设置auto-solib-add为0将阻止为所有共享库加载符号,然后您可以使用sharedlibrary命令手动添加文件(接受正则表达式).如果省略此正则表达式,则加载所有共享库.
然而,这会阻止所有符号(不仅仅是调试符号)的自动加载,并且还会阻止系统库的符号自动加载,这通常是解开堆栈所必需的.
更好的方法可能是在某处保存Qt5库的副本以及完整的调试信息,例如~/Qt5-debug/,然后strip -g在原始库上运行.这样,您将获得所有库的符号信息,并且在极少数情况下,当您实际需要Qt5的完整调试信息时,您仍然可以使用GDB file ~/Qt5-debug/libQt5Core.so.5.2或类似命令来执行此操作.
本章GDB文件从GDB手册有关于使用这种单独调试符号更多的文档.