2009-07-09 2 views
0

저는 인텔 컴파일러와 비주얼 스튜디오를 사용하고 있으며지도에있는 값을 디버깅 할 수 없습니다. 나는지도의 크기를 보여주는 빠른 미리보기를 얻지 만, 요소는 "(오류)"로만 표시되며 간단한 예를 들어 설명해 보겠습니다. 단일 항목 myMapVariable [6] = 1로지도를 생성했습니다. ;깨진 std :: map visualiser in VS2005

이 "myMapVariable 1" 을 얻고 시계 창에서 같은 것을 얻고 더하기로 확장하면 name = "(오류)"및 값 = 0 (이)라는 단일 하위 항목이 제공됩니다 잘못된 것입니다.)

[raw members]라는 자식 아래의 원시 멤버 변수를 보여주는 내 autoexp.dat 디버깅 파일에 한 줄을 추가했습니다. 그 결과 출력은 image에 표시됩니다. 나는 누군가가 통찰력을 제공 할 수 있는지 물어볼 수 있도록 도움없이이 문제를 더 파헤 칠 수있는 한계에 거의 도달했습니다.

답변

0

Intel을 사용하여이 문제를 해결할 수 없었지만, 이제는 최신 Visual Studio 컴파일러 VS2010으로 옮겼습니다. 더 이상 문제가되지 않습니다. 답이 아닌 질문을 남기고 싶지 않기 때문에 대답으로 표시하고 있습니다.

0

나의 유일한 제안은지도가 초기화되고 범위 내에 있는지 확인하는 것입니다. 그렇지 않으면, 나는 잘 모르겠지만, 나는 이것을 본 적이 없지만 지금 VS2008을 사용합니다.

+0

예 초기화 된 경우 디버거를 중지하고 맵을 반복하는 루프를 추가하여 값이 무엇인지 알 수 있습니다. (어쩌면 2008 년이 대답 (또는 적어도 좋은 전환)입니까 –

1

공격적 최적화 설정을 사용하는 것이 가장 가능성이 큽니다. 최소한 스크린 샷은 그런 종류의 전형적인 것입니다. 이 경우 디버거는 레지스터에 핫 값을 적극적으로 채우고 있으며 정지 된 시점에서 전체지도를 올바르게 시각화하는 데 필요한 값이 이미 버려지고 다른 것으로 덮어 쓰여질 수 있습니다 (예를 들어, 현재 노드에 대한 포인터). 높은 품질의 최적화로 잘 알려진 Intel C++가 VC++보다 훨씬 자주 이런 종류의 작업을 수행한다고 생각합니다. (그러나 필자도 종종 자주 사용합니다.)

디버그 구성에서 프로젝트를 다시 컴파일하면 (최적화 프로그램이 비활성화 될 수 있음) 고려하고 도움이되는지 확인하십시오.

+0

파벨, 의견을 주셔서 감사합니다 - 실제로/Od 플래그가 (최적화 사용 안 함) 디버그 모드에서 실행 해요. 직선 MSVC 컴파일러를 사용하여이 시도 할 수도 있고 차이가 있는지 확인하십시오. 인텔 컴파일러가 std :: map을 처리하는 방법 –

관련 문제