gpt4 book ai didi

c++ - 奇怪的调试器问题?

转载 作者:行者123 更新时间:2023-11-27 23:33:12 25 4
gpt4 key购买 nike

我创建了这个数据结构:

class Event
{
public:
Event(EVENT_TYPE type, void* pSender = 0, int content1 = 0,
int content2 = 0, int content3 = 0, int content4 = 0);
~Event(void);

// ... some functions

protected:
EVENT_TYPE itsType;
void* itsPointerToSender;
int itsContent_1;
int itsContent_2;
int itsContent_3;
int itsContent_4;
int numStacked;
};

它的构造函数很简单

Event::Event(EVENT_TYPE type, void* pSender, int content1, int content2, int content3, int content4)
: itsType(type),
itsPointerToSender(pSender),
itsContent_1(content1),
itsContent_2(content2),
itsContent_3(content3),
itsContent_4(content4),
numStacked(0)
{
}

由于一些我无法理解的奇怪原因,VS 调试器不能也不会向我显示 itsContent_4 中包含的任何内容。如果我监视变量,itsContent_4 会给我一个 symbol "itsContent_4"not found 而用 itsContent_3 做同样的事情时效果很好。就编译器而言,我不确定该变量是否存在!

我是不是漏掉了什么?

编辑:现在看来(甚至更奇怪)改变声明中变量的顺序会造成更大的困惑!我尝试将 itsContent_4 放在 itsContent_1 之前,现在 itsContent_1 正在使用 itsContent_4 的值进行初始化!这里发生了什么?我怀疑与命名有关,所以我会尝试重命名它们,看看会发生什么。

编辑 2: 是的,显然将变量名称更改为 itsContent_a 而不是 itsContent_1 等等效果很好。在变量名中使用数字有什么限制吗?

最佳答案

在我看来,调试器使用了错误的 .pdb 文件。 Tools + Options, Debugging, General,确保勾选“Require source files to exactly match the original version”。

在激活断点的情况下进行调试时,使用“调试”+“Windows”+“模块”并右键单击列表中的可执行文件。单击“符号加载信息”以找出调试器在何处找到 .pdb 文件。

另一个可能的错误是这个类是在一个单独编译的可执行文件中定义的,比如一个 DLL,它是用不兼容的设置编译的。使对象的布局不再匹配。在这种情况下不太可能。

关于c++ - 奇怪的调试器问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3247837/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com