2014-10-29 3 views
0

REDHAWK IDE에서 디버깅을 단계별로 수행 할 때 줄 바꿈 표시가 때때로 적절한 프로그램 흐름을 따르지 않는 것으로 나타나고 모든 변수가 적절하게 업데이트되지 않는 것으로 보입니다.REDHAWK IDE에서 디버그

저는 여러 구성 요소가있는 칠판을 사용하고 있습니다. 구성 요소의 .spd.xml 파일을 열고 Overview 탭에서 "debug as"하이퍼 링크를 클릭하여 디버깅을 시작합니다. 이것은 다른 사람들과 함께 칠판에 구성 요소를 추가합니다. 디버거는 모든 구성 요소를 시작한 후 내 중단 점에 도달합니다.

이러한 증상 (데이터가 업데이트되지 않거나 잘못 스테핑하는 프로그램)을 경험 한 사람이 있습니까? 그렇다면 원인은 무엇이며 어떻게 극복합니까?

감사합니다,

--Mike

답변

1

당신이 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' 

을 이제 당신이 최적화 레벨 2에서 0으로 감소 된 것을 볼 수 있습니다 V = 1을 다시 실행합니다. 이렇게하면 디버깅 문제가 해결되지만 덜 최적화 된 바이너리가 생성됩니다.

관련 문제