2012-07-23 4 views
0

지도를 사용하여 다양한 데이터 유형을 포함하는 클래스가 있습니다. 클래스는 디버그 및 릴리스 모드에서 올바르게 작동합니다. 그러나 내 프로그램을 디버깅 할 때 디버거가 클래스의 여러 맵에 무엇이 있는지 확인할 수 없습니다. 일반적으로, 나는 다른 곳에서 메모리 손상을 의심하지만 프로그램을 실행하는 동안 메모리 오류가없고 값을 설정하고 사고없이 검색 할 수 있습니다.VS2008 디버거가지도 데이터를 표시하지 않습니다.

다음은 디버거 오류의 예입니다. 맵의 요소 수는 올바르게보고되지만 값은 오류입니다. 흥미롭게도, 맵을 포함하는 클래스의 멤버 함수 내에서 오류가 발생하지 않고 모든 값이 표시됩니다. 또한, 이상하게도 문자열 맵은 문제없이 나타납니다.

Windows 7 (64 비트)에서 Visual Studio 2008 (SP1)을 사용하고 있습니다. 클래스 코드는 사실 디버깅중인 클라이언트 프로그램에 의해 시작시로드되는 DLL에 있습니다. 어떤 아이디어라도 감사합니다. 나는 표준 : :지도를 사용하고 때 enter image description here

class DataTable { 
public: 
    std::string get_string(std::string); 
    float get_float(std::string); 
      (etc.) 

    void set_string(std::string, std::string); 
    void set_float(std::string, float); 
      (etc.) 

protected: 
    std::map<std::string, std::string> m_string_map; 
    std::map<std::string, float> m_float_map; 
      (etc.) 
} 

답변

1

, 방금 디버깅을 위해 해결 방법을하고있는 중이 야 :

#ifdef _DEBUG 
uint32_t num_strings_in_map = (uint32_t)m_string_map.size(); 
uint32_t num_floats_in_map = (uint32_t)m_float_map.size(); 
#endif 

내가 다음 중단 점, 또는 출력 화면에 번호를 설정할 수 있습니다. ..

관련 문제