【发布时间】:2014-04-06 05:18:38
【问题描述】:
我有一个更大的 C++ 程序,其中包含很多要调试的模板。不幸的是,gdb 需要几分钟才能读取这些符号。
http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html 包含许多调试选项。
您会建议哪些选项使 gdb 更快/更可用。
更新:看起来速度变慢是由 libtool 引起的。如果 gdb 通过 libtool --mode execute 启动,它会很慢。如果 gdb 启动 gdb .libs/foo 它是合理的快。任何想法为什么要慢得多?
更新:另一个建议是 -fvisibility=hidden 请参阅http://gcc.gnu.org/wiki/Visibility
【问题讨论】:
-
我很惊讶 GDB 索引 (sourceware.org/gdb/onlinedocs/gdb/Index-Files.html) 没有被提及?您的第一个调试符号加载将与往常一样慢,但使用
save gdb-index命令和一些objcopy魔法可以大大加快后续调试符号加载时间。在您的构建中,在生成带有调试符号的二进制文件后,我将以批处理模式运行 GDB 以生成并将所述索引合并到其中,并预先生成一个可快速加载的可调试二进制文件。这尤其值得包含在构建机器上。