Debugging

gdb 不會在 KDevelop 中顯示所有變數

  • May 24, 2015

希望,圖像比我能做的更好地描述了這個問題。

通常,我使用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 允許您使用-gwith -O。優化程式碼所採取的捷徑有時可能會產生令人驚訝的結果:您聲明的某些變數可能根本不存在;控制流可能會短暫地移動到您沒有預料到的地方;有些語句可能無法執行,因為它們計算常量結果或它們的值已經在手邊;有些語句可能會在不同的地方執行,因為它們已移出循環。

在您的情況下,您在調試時看不到的變數可能已被優化掉。

要調試您的程序,您應該-Og-Og++命令行中使用,而不是。這啟用了對調試沒有任何影響的優化。

引用自:https://unix.stackexchange.com/questions/205350