이 그림이 나보다 문제를 더 잘 설명해주기를 바랍니다.
일반적으로 멀티스레드 애플리케이션을 디버깅하고 있습니다.카이개발그리고데이터 베이스.
애플리케이션(F11 단축키)을 단계별로 실행하고 변수 초기화를 진행했습니다.응답.
화면 왼쪽에는 볼 수 있는 모든 변수의 목록이 있습니다.
나는 그것을 사용하고 있다-G옵션g++, 하지만 다른 옵션이 누락된 것 같습니다.
내 메이크파일에서:
g++ -std=c++11 -g -ggdb -O example.cpp -I../libs -I$(BOOST_INCLUDES) -L$(BOOST_LIBS) -pthread -lboost_thread -lboost_system -o example
따라서 기본적으로 앱을 구축하는 데에는 문제가 없습니다. 또한 매우 잘 실행됩니다. 디버거에 모든 변수가 표시되지 않는 이유를 아는 사람이 있습니까?
답변1
이것GCC 문서설명하다:
GCC를
-g
사용하여 코드를 최적화하기 위해 취하는 지름길-O
은 때때로 놀라운 결과를 낳을 수 있습니다. 선언한 일부 변수는 전혀 존재하지 않을 수 있으며 일부 명령문은 실행되지 않을 수도 있습니다. 상수 결과를 계산하거나 해당 값이 이미 존재하므로 일부 명령문은 루프 밖으로 이동되었기 때문에 다른 위치에서 실행될 수 있습니다.
귀하의 경우 디버깅 시 표시되지 않는 변수가 최적화되었을 수 있습니다.
프로그램을 디버깅하려면사용해야한다-Og
-O
명령 g++
줄 이 아닌 이렇게 하면 최적화가 디버깅에 영향을 주지 않습니다.