【问题标题】:VS2008 Debugger not displaying map dataVS2008 调试器不显示地图数据
【发布时间】:2012-07-21 20:11:24
【问题描述】:

我有一个使用地图包含各种数据类型的类。该类在调试和发布模式下正常运行。但是,当我尝试调试我的程序时,调试器无法确定类内的多个映射中的内容。通常,我会怀疑来自其他地方的内存损坏,但是在运行程序时没有内存错误,并且值的设置和检索没有任何意外。

这是调试器错误的示例。地图中的元素数量报告正确,但值是错误的。有趣的是,当我打破包含地图的类的成员函数时,不会发生此错误并且所有值都是可见的。此外,奇怪的是,字符串映射显示没有问题。

我在 Windows 7(64 位)上使用 Visual Studio 2008 (SP1)。类代码实际上是在我正在调试的客户端程序启动时加载的 DLL 中,如果这有所不同的话。任何想法表示赞赏。

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.)
}

【问题讨论】:

    标签: visual-studio debugging visual-studio-2008


    【解决方案1】:

    当我使用 std::map 时,我正在做一个解决方法,仅用于调试目的:

    #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
    

    然后我可以设置断点,或者将数字输出到屏幕...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      相关资源
      最近更新 更多