我有一個問題,使用遠程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解決方法。 –