如果调试运行良好,但发布崩溃该怎么办

Mat*_*Mat 5 c++ crash debugging release

我有一个在调试版本中运行良好的应用程序,但是当我在发布版本中启动它时,我得到了一个

unhandled Exception at 0x0043b134 in myapp.exe: 0xC0000005:
Access violation while reading at position 0x004bd96c
Run Code Online (Sandbox Code Playgroud)

如果我点击"break",它会告诉我没有加载符号,并且无法显示源代码.

在这种情况下我能做些什么来追查问题?

Mon*_*ier 10

这种问题通常是由于单元化变量造成的.我会从那里寻找你的问题.

调试模式更宽容,因为它通常配置为初始化尚未显式初始化的变量.

也许您正在删除一个单位指针.在调试模式下,它可以工作,因为指针被清零,删除ptr在NULL时可以正常.在释放它是一些垃圾,然后删除ptr实际上会导致问题.


Dan*_*nas 4

可能有两件事:

  • 除了检查本身之外,您的一个或多个断言确实起到了必要的作用
  • 其他的东西

要排除前者,请尝试assert在调试版本中重新定义为空操作。如果缺少某些断言导致崩溃,您将会看到它。否则,那就是另外一回事了。

另外,我假设你有版本控制。这才刚刚开始发生吗?您可以分析上周以来的代码更改。

最后,即使在调试模式下没有崩溃,运行内存检查器工具也可能有助于发现不正确的内存访问。


归档时间:

查看次数:

21797 次

最近记录:

9 年 前