내 C++ 코드에서 디버거를 사용하고 있는데 (때로는이 점에 영감을받은 GDB와 함께 QT Creator였습니다) make clean
을 호출 한 후 make
을 호출 한 후에도 디버거가 이상한 것처럼 보입니다.디버거가 왜 놀라서 내 코드와 일치하지 않는 이유가 무엇입니까?
때로는 다른 코드의 줄 번호와 일렬로 늘어서는 것처럼 보일 것입니다. 때로는 한 줄 씩 벗어나는 경우가 있습니다. 때로는 이것이 완전히 벗어나기도하고 때로는 불규칙하게 뛰어 넘을 수도 있습니다.
다른 경우에는 함수 호출을 단계별로 수행하는 동안 단계별로 묻지 않은 것들을 단계적으로 실행하여 놀라서 울릴 것입니다.이 단계는 함수의 일부인 문자열 초기화 루틴으로 넘어갈 수 있습니다.
seg 결함이 생기면 때로는 완벽하게 어디에서 발생했는지 알 수 있으며 다른 경우에는 코드라고하는 함수에 대한 물음표를 표시 할 수 없으며 어디에서나 내가 볼 수있는 것은 모두 어셈블리입니다. 똑같은 코드를 반복적으로 실행합니다.
이러한 오류의 원인을 패턴으로 파악할 수없는 경우가 있으며 때로는 디버거가 완벽하게 올바르게 동작하는 경우가 있습니다.
이러한 디버거 괴물의 배경에는 어떤 이론적 인 이유가 있으며이를 막기 위해 수행 할 수있는 구체적인 단계는 무엇입니까?
나는 $ 5를 전자에 넣었다. Btw, 전체 응용 프로그램을 디버그 빌드로 다시 작성하지 않으려면 pragma를 통해 파일별로 개별적으로 최적화를 비활성화 할 수 있습니다. 컴파일러에 따라 다르지만 Visual Studio에서는 #pragma optimize ("", off)를 시도 할 수 있습니다. – EboMike