2010-12-20 3 views
1

릴리스 응용 프로그램을 디버깅하는 동안 변수 값을 볼 수 있어야합니다. 컴파일러 옵션을 Z7로 설정하고/DEBUG 및/PDB : linker 옵션을 지정했습니다. 이제 응용 프로그램에 대한 pdb가 있습니다.릴리스 빌드에서 변수 값을 보는 방법

이 설정을 사용하면 코드 안에 브레이크 포인트 (Windbg)를 넣을 수 있으며 제대로 작동합니다. 그러나 변수 값을 볼 수 없습니다.

지역 창은 포인터 값만 표시하지만 동일한 내용은 볼 수 없습니다. 예를 들어, 내부에 int가있는 구조체에 대한 포인터가 있으면 포인터의 값만 표시됩니다. 트리에서 +를 클릭하여 변수를 확장하면 변수 이름에 값이 표시됩니다. <Memory access error>

변수 값을 표시하려면 어떻게해야합니까?

답변

1

여러 번 존재하지 않기 때문에 여러 번 볼 수 없습니다. 최적화 된 어셈블리 코드를 보면 많은 중간 변수가 완전히 제거되어 성능이 향상된다는 것을 알 수 있습니다. 그것은 당신이보고있는 것일 가능성이 가장 높습니다. 그리고 그 주변의 유일한 방법은 디스 어셈블리를 따라 가고 올바른 메모리 위치/레지스터를 보는 것입니다.

+0

최적화가 여기에 해당한다고 생각하지 않습니다. 나는 지속적인 대상조차도 할 수 없다. – Canopus

+0

은 디스 어셈블리를 살펴 봅니다. 중단 점 시점에서 변수 및 레지스터의 상태는 디버그 모드에서와 같이 깨끗하고 별개가 아니라는 것을 알 수 있습니다. 상황은 다른 순서로 수행되며 관심있는 포인터는 아마도 액세스 할 수 없습니다. – tenfour

+0

클래스 함수 안에 있는데도 여전히이 포인터의 내용을 볼 수 없습니다. – Canopus