我有一个问题,使用远程GDB会话调试C++应用程序,代码库很大,因此它包含(编译时使用“-O2”,“-g”,“-DNDEBUG”标志)带有调试信息的大文件1.1 Gb)。GDB如何处理大(> 1 Gb)调试文件?
不幸的是,我不能只在调试过程中使用的部分符号表,因为所有的时间调试程序跳过应用程序的一部分,我不能在那里设置断点,看看代码,而调试。
对于这个问题的解决方案,我执行以下命令我必须连接到目标之后:
symbol-file -readnow [path-to-file-with-debugging-info]
这扩大完整符号表。但在这种情况下,GDB只是耗尽内存达到13 Gb甚至更多的内存(而我的机器上只有16 Gb可用)。已知此问题已在GDB Wiki中列出。
我的问题是如何处理GDB在这种情况下,当我需要完整符号表,但GDB需要的内存量ENORM为了扩大呢?
在此先感谢!
部分符号表是gdb优化。如果他们不工作,那么这是一个你应该提交的gdb错误。普通用户不应该需要“-readnow” - 它更像是gdb开发人员选项和/或bug解决方法。 –