0

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

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

我在 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.)
}
4

1 回答 1

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

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

于 2012-10-19T13:46:42.700 回答