Debugging
gdb 不會在 KDevelop 中顯示所有變數
希望,圖像比我能做的更好地描述了這個問題。
通常,我使用gdb在****KDevelop中調試多執行緒應用程序。
我正在逐步調試應用程序(F11 快捷方式)並且已經通過了變數resp的初始化。
螢幕左側是我能看到的所有變數的列表。
我正在為g++使用****-g選項,但我懷疑我缺少其他一些選項。
從我的makefile:
g++ -std=c++11 -g -ggdb -O example.cpp -I../libs -I$(BOOST_INCLUDES) -L$(BOOST_LIBS) -pthread -lboost_thread -lboost_system -o example
所以,基本上,建構應用程序沒有問題。它也執行良好。有人知道為什麼不是所有變數都顯示在調試器中嗎?
GCC 文件解釋了這一點:
GCC 允許您使用
-g
with-O
。優化程式碼所採取的捷徑有時可能會產生令人驚訝的結果:您聲明的某些變數可能根本不存在;控制流可能會短暫地移動到您沒有預料到的地方;有些語句可能無法執行,因為它們計算常量結果或它們的值已經在手邊;有些語句可能會在不同的地方執行,因為它們已移出循環。在您的情況下,您在調試時看不到的變數可能已被優化掉。
要調試您的程序,您應該
-Og
-O
在g++
命令行中使用,而不是。這啟用了對調試沒有任何影響的優化。