【发布时间】:2013-04-29 19:49:44
【问题描述】:
这里发生了许多错误,但我确信它们都是链接的,所以首先我在位置(通常在 0x00000000 附近)遇到访问冲突读取位置异常 但我只在发布中得到这些异常,而不是在调试中,即使我设置调试这样做。我还发现了错误发生的位置,但是当我跨步时,它进入了一个完全不相关的函数,该函数未在该行或该代码行中的任何函数中调用。但是当调用类似的代码时,它仍然会转到这个不相关的函数,但不会失败。这一切都只发生在发布版本中。我知道哪段代码导致了错误,就好像我把它注释掉一样。同样在发布的监视窗口中,大多数时候所有数字都是错误的,这从来都不是问题,但它也可以帮助添加一些代码以将变量的值输出到文件并且变量都很好,指针是明智的,但是当异常发生时,它总是说它们的 0x00000020 但是当我查看日志时它们很好。这是 32 位的,但在 c++ 中的 64 位 windows 7 上。请任何帮助都会很好!
【问题讨论】:
-
如果您使用类似
a[8](如果 sizeof(a[0]) == 4)和a是NULL之类的东西访问数组,那么您将在 0x00000020 处遇到访问冲突。查找未分配的变量。 -
谢谢,但没有什么不同,因为它似乎在变量的值方面也随机行事,一切都很好,然后它只是抛出异常,主要问题是代码太长了20000 行,错误似乎是代码的核心部分,但我需要的是一种处理错误的方法。代码的作用就像我正在调用指针为空的类的非静态函数。
-
对我来说仍然听起来像是一种竞争条件,两个线程接触一个变量。要么在设置之前读取它,要么设置然后在读取之前重置为 null。
-
再次不,我稍微更改了代码,以便它全部在一个线程上运行,但我仍然得到错误,无论如何那段代码和内存只真正涉及一个线程,所以它不可能真的是那个。
-
发布构建问题很难调试。从禁用优化器开始,这样您从调试器获取体面信息的麻烦就会减少。项目 + 属性、C/C++、优化、优化 = 禁用。
标签: c++ debugging visual-studio-2012 release