问题
While debugging a Qt 5 application, I am sometimes not interested in the internals of Qt 5 but in the structure of the application itself. Therefore I do not need to load all debugging symbols of the Qt 5 libraries since these take a few seconds to load.
Is it possible to prevent GDB from loading symbols for these Qt 5 libraries while keeping the debugging symbols for my application?
回答1:
Is it possible to prevent GDB from loading symbols for these Qt 5 libraries while keeping the debugging symbols for my application?
Yes.
As Richard Critten's comment mentions, setting auto-solib-add to 0
will prevent loading of symbols for all shared libraries, and you can then add files manually with the sharedlibrary command (which accepts a regex). If this regex is omitted, then all shared libraries are loaded.
That however would prevent auto-loading of all symbols (not just debug symbols), and would also prevent auto-loading of symbols for system libraries, which are often required to unwind the stack.
A better approach may be to save a copy of Qt5 libraries with full debug info somewhere, e.g. ~/Qt5-debug/
, then run strip -g
on the original libraries. That way, you will get symbolic info for all libraries, and in the rare case when you actually need full-debug info for Qt5, you can still do that using the GDB file ~/Qt5-debug/libQt5Core.so.5.2
or similar commands.
The chapter GDB Files from the GDB manual has more documentation on using such separate debugging symbols.
来源:https://stackoverflow.com/questions/31763639/how-to-prevent-gdb-from-loading-debugging-symbol-for-a-large-library