2012-12-12 32 views
4

我一直在更新我的Mac工具鏈,以利用C++ 11功能並最終獲得STL數據結構的漂亮打印調試。我用Homebrew構建了gcc 4.7.2編譯器。我已經能夠使用這個新編譯器重新編譯我當前項目的源代碼。然而,我嘗試過的所有版本的gdb在設置斷點,查看源代碼或查看本地變量時都存在各種問題。gdb 7.5.1調試可執行文件的問題通過g生成4.7.2

我相信gdb的版本是作爲Xcode命令行工具版本6.3.50的一部分安裝的,因此無法顯示各種基於模板的變量。我還構建並試圖使用其他幾個gdb版本(7.3.1,7.4.1 & 7.5.1),但每個gdb版本都有問題,難以設置斷點,查看源代碼和視圖變量。具體而言,這些gdb版本不知道頭文件中定義的函數的源文件或行號,不能在這些頭文件函數中設置斷點,並且許多局部變量已被「優化」。

是否有其他人遇到過這些問題,如果是的話您是否能夠解決這些問題?我應該在我的工具鏈中使用哪些版本以避免這些問題?

爲了記錄,我的開發是在最近的MBP上運行最新的Mountain Lion更新。我的IDE是帶有CDT版本8.1.1的Eclipse Juno。而且,是的,我已經簽署了我已經構建並嘗試使用的所有gdb版本。

感謝您的任何輸入,

鮑勃

回答

0

的局部變量已經被 「優化掉」。

這是在調試優化代碼時發生的嗎?如果是這樣,那就是預計。您之前可能沒有看到過這種情況,因爲較老的GCC沒有那麼優化。

修復:使用-g -O0標誌構建您的待調試代碼。

+0

我正在用-g3和-O0進行編譯,但像'this'指針這樣的變量即使在引用數據成員的那些方法中也會被gdb優化。但另一個巨大的挑戰是,gdb似乎沒有頭文件中定義的方法的源文件和行號信息。所以我不能設置斷點或通過執行。 – neobobkrause

+0

嘗試'gcc -ggdb' –

+0

或者更好,'gcc -ggdb3 -O0' –

相關問題