程序編譯時開啟了優化選項,那么在用GDB調試被優化過的程序時,可能會發生某些變量不能訪問,或是取值錯誤碼的情況。這個
是很正常的,因為優化程序會刪改程序,整理程序的語句順序,剔除一些無意義的變量等,所以在GDB調試這種程序時,運行時的指令和你所編寫指令就有
不一樣,也就會出現你所想象不到的結果。對付這種情況時,需要在編譯程序時關閉編譯優化。
解決方案:
在編譯時加上 ‘-gstabs+’ 編譯選項,比如:
g++ -g -Wall -gstabs+ -o main.o main.cpp