2014-10-29 49 views
0

當在REDHAWK IDE中逐步完成調試時,行標記有時似乎沒有遵循正確的程序流程,並且並非所有變量都沒有適當更新。REDHAWK IDE中的調試

我在黑板上運行多個組件。我通過打開組件的.spd.xml文件並單擊overview選項卡上的「debug as」超鏈接來開始調試。這將組件添加到黑板與其他組件。在我啓動所有組件後,調試器擊中了我的斷點。

有沒有人遇到這些症狀(數據沒有更新或程序不正確步進)?如果是這樣,原因是什麼,如何克服這一點?

感謝,

--Mike

回答

1

很可能正在調試一個C++的可執行文件。在編譯源代碼時,編譯器執行某些優化,可能會導致機器代碼與源代碼相比出現故障。這些優化也可能會從範圍中刪除變量。優化級別是編譯期間的參數。 REDHAWK中使用的默認級別是-O2。有關詳細信息,請參見GCC手冊頁(http://linux.die.net/man/1/gcc)。

如果您有此組件的源代碼,請嘗試以下操作:

make clean; # Remove the binaries previously compiled if any. 
./reconf; 
./configure; 

# Stop here and check the config.log file and search for CXXFLAGS, at the bottom of the log file you'll notice that they are by default set to '-g -O2'. 

make V=1 #The V=1 will set the verbose flag and you'll see the calls to g++/gcc. Notice that the CXXFLAGS are in the g++ calls. 


To override the CXXFLAGS you may call configure like so: 
./configure 'CXXFLAGS=-O0 -g' 

現在,當您重新運行使V = 1,你會看到優化水平已降至2至零。這可能會解決您的調試問題,但產生了較少優化的二進制文件。