Anjuta IDE 下調試程序容易忽略的一個問題

Anjuta IDE 下調試程序容易忽略的一個問題

首先說一下我的系統環境:系統是Ubuntu 8.10,安裝了build-essential,升級到最新版的gcclibc等,其他還安裝有gtk相關的庫與開發環境,可以配合glade3進行gnome圖形界面開發。

平 時主要用的是Anjuta IDE,版本是2.4.1,應該是比較新的穩定版了。總體感覺不錯,不過總覺得其內置的調試器有時候行爲比較奇怪,比如有時它不在你下斷點的地方停止,或 者按下F5進行單步運行時發現程序並沒有按應有的邏輯運行。典型的問題是,如果將斷點下在局部變量賦值或者判斷的地方,調試器就無法識別這個變量,而且無 法進入for循環之內跟蹤等等。如下是一個例子:


圖 中可見,斷點明明設在49行,但用shift+F12啓動調試後,程序直接中斷在了50行。而且按下F5單步運行時也不會進入for循環,而是直接跳出了 循環,執行下一條語句。另外,監視中指定了“idx”這個變量,但數值和類型都是“?”,顯然未能識別。不過雖然如此,其他代碼,比如printf或者函 數調用則能正常跟蹤調試。

後來參考了anjutamanual,發現有這樣一條note

In order to better user the debugger, it is strongly recommended to debug program with debugging information (-g for gcc) and no optimization (-O0 for gcc). This can be done by selecting the Debug configuration before building the program for the first time.

由 於每次運行程序都是直接用嚮導生成工程,然後直接通過automakeautoconfig之類的自動工具完成相關文件生成,沒有關心具體的編譯參數等 配置選項。而上面的文字裏提到了需要啓用調試信息(-g參數),並且要禁止代碼優化(-O0參數),因此很可能是這個問題。經過一番測試,最終最簡單的方 法如下:

首先需要清理一下配置,在“生成”菜單下最後有一個“清理配置”功能,點擊即可。

 

然 後打開“生成”菜單下的“配置工程”對話框,可見有個“配置”下拉菜單,默認都是“默認”,此外還有“調試”等其他選項。這裏不需要選其他的,且構建目錄 不要改變,直接勾選“重新生成工程”,然後在“配置選項”裏填入代碼'CFLAGS=-g -O0' 'CXXFLAGS=-g -O0' 'JFLAGS=-g -O0' 'FFLAGS=-g -O0'(包括單引號),執行即可。

如果執行過程是successful的,那麼就可以用shift+F11生成工程了。如果一切順利,現在就能正常調試了。比如我的例子中,同樣的斷點,經過如上處理後調試結果如下:

明顯可見程序正確地在斷點位置中斷了。而且變量idx也能被正常識別了。

綜上,這個問題其實很簡單,就是因爲沒有按照調試的配置對程序進行編譯鏈接而造成的調試功能不能完全運作。當然,當調試完成想恢復正常配置時,重複上述步驟,並在配置選項裏留空,再重新配置並生成工程即可。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章