1

내 VS2008 디버거는 거의 모든 변수에 대해 손상된 값을 표시합니다. 내가 올바른 값을주는 값을 인쇄 했으므로 정확하지 않다는 것을 안다.VS2008 디버거가 잘못된 값을 표시합니다. 디버거를 청소/재설정/수정하는 방법?

여기 그래서, 내가 여기에 잘못된 것을 얻을하지 않는 CONSOL 인쇄에서 그 가짜 값의 일부 enter image description here enter image description here

그러나 한편,

enter image description here

있습니다. 하지만이 문제는 Visual Studio와 관련되어 있어야한다고 생각합니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

업데이트 : 이것은 Qt는 application.And입니다 여기에 내가 시도했던 것들 :

  • 재건 모든 프로젝트
  • 삭제 debug 폴더 및
  • 가 자식의 repo에서 새 복사본을 얻었다 재건하고 문제가 N에 표시되지 않으면 VS2008
+0

릴리스 구성에서 컴파일 중입니까? – idanuda

+0

@idanuda nope. 디버그 – Morpheus

+0

전체 디버그 폴더를 삭제하려고 시도 했습니까? – idanuda

답변

1

에 대한

  • 설치된 SP1 모든 C++ 관련 업데이트/핫픽스를 재건 on-Qt 앱을 사용하는 경우이 특정 애플리케이션의 일부 설정은 최적화 기능을 켜고 컴파일 할 수 있습니다.

    Visual Studio에서는 혼란 스럽지만 "디버그"빌드가 최적화를 활성화하고 "릴리스"빌드가 최적화를 해제하도록 중지하지 않습니다 (더 자주, 최적화가 해제 된 릴리스 빌드가 표시됨) .

    그 외에 디버그 기호가 생성되지 않아서 디버깅 할 수없는 "디버그"빌드가있을 수 있습니다 (프로젝트의 두 가지 설정이 컴파일 및 링크 중에 기호를 켜고 끕니다). 즉, "릴리스"및 "디버그"빌드 구성에서 "디버깅 켜기/끄기"및 "최적화 켜기/끄기"의 조합을 사용할 수 있습니다.

    기호를 생성하기 때문에 기호가 생성되지 않는 것이 아닙니다. 따라서 구축중인 모든 프로젝트를 확인하고 "디버그"또는 "릴리스"라는 이름이 아닌 "최적화"설정을 확인하십시오.

  • +0

    ** from msdn ** 컴파일러가 코드를 최적화하면 명령의 위치를 ​​변경하고 다시 구성하므로 컴파일 된 코드가 더 효율적입니다. 이 재배치 때문에 디버거는 항상 일련의 명령어에 해당하는 소스 코드를 식별 할 수 없습니다. 최적화가 영향을 미칠 수 있습니다. 로컬 변수. 최적화 프로그램에서 제거하거나 디버거가 이해할 수없는 위치로 이동할 수 있습니다. 함수 내부에 위치하며, 최적화 프로그램이 코드 블록을 병합 할 때 변경됩니다. 호출 스택의 프레임에 대한 함수 이름입니다. 옵티마이 저가 두 함수를 병합하면 잘못 될 수 있습니다. – Morpheus