C++ 実行可能ファイルをデバッグしている可能性があります。ソース コードがコンパイルされると、コンパイラは特定の最適化を実行しました。これにより、ソース コードと比較して、マシン コードの順序が乱れる可能性があります。これらの最適化により、スコープから変数が削除される場合もあります。最適化レベルは、コンパイル中のパラメーターです。REDHAWK で使用されるデフォルトのレベルは -O2 です。詳細については、GCC の man ページ ( 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'
make V=1 を再実行すると、最適化レベルが 2 から 0 に減っていることがわかります。これにより、デバッグの問題が解決される可能性がありますが、最適化されていないバイナリが生成されます。