2011-12-13 293 views
4

在一次調試期間使用GDB進行調試時,隨着時間的推移變得越來越慢。即使是最簡單的操作,如跨越和踩入,可能需要幾十秒,有時甚至幾分鐘。隨着時間的推移,GDB變得​​越來越慢

我正在調試一個相當大的項目(Chromium瀏覽器)。我能想到的唯一原因是gdb隨着時間的推移變得越來越慢,因爲它加載越來越多的符號,並且花費更長的時間來處理它們。然而,Chromium將整個代碼編譯成一個巨大的可執行文件,其中包含應該在開始時加載的所有符號。因此符號數據庫在調試期間不會增長。此外,爲什麼只需要查找符號來執行步驟或步驟操作?

雖然測試我已經嘗試使用gdb與前端(Eclipse,QtCreator,Emacs)並從命令行來確認這不是一個IDE問題。這兩個用例都演示了相同的問題,但是它好像在IDE中開始出現得更早(可能是因爲IDE還爲watch view,調用堆棧,線程列表等加載了符號)。

爲什麼GDB變慢?這是設計缺陷,錯誤還是我電腦中的某個特定問題? GDB有沒有免費的替代方案可以更快地工作?

+0

聽起來像是我的內存泄漏 – ZMorek

+0

@ZMorek:在GDB或在鉻? –

回答

3

爲什麼GDB變慢?

這是一個錯誤。嘗試更新版本的GDB(最好是當前的CVS快照)。如果問題仍然存在,請使用repro指令將其報告給GDB bugzilla

應該在最開始加載的所有符號。

GDB在啓動時加載部分符號(psymbols),並讀取更多「按需」,因此預計會有一些增長。

爲什麼一個需要仰視的符號只是在執行步驟或步入

爲了跨過或進入GDB將可能需要爲當前轉換單元線表(TU) 。如果您的「步入」操作將您帶到新的TU,那麼將不得不加載新的行表。

不過,它應該不是把GDB帶到任何地方几分鐘到stepnext

+0

我在Linux上完全停止了開發,但我的同事說最新版本要快得多,所以我會將其標記爲正確答案。 –

相關問題