【发布时间】:2011-03-27 03:40:34
【问题描述】:
我的 C++ 应用程序随机崩溃,它可能一个月不会崩溃,然后在一小时内崩溃 10 次,有时它可能会在启动时崩溃,而有时它可能会在运行几个小时后崩溃(或根本不会崩溃)。
我在 GNU/Linux 上使用 GCC,在 Windows 上使用 MingW,因此我无法使用 Visual Studio JIT Debug...
我不知道如何继续,随机查看代码是行不通的,代码很大(而且好的部分不是我的工作,而且上面有很多遗留的东西),而且我也不知道如何重现崩溃。
编辑:很多人提到...我如何制作核心转储、小型转储或任何转储?这是我第一次需要事后调试。
EDIT2:实际上,DrMingw 捕获了一个调用堆栈,没有内存信息......不幸的是,调用堆栈对我没有多大帮助,因为在接近尾声时突然它进入了一些我没有的库(或其他东西)有调试信息,只产生一些十六进制数字......所以我仍然需要一些体面的转储来提供更多信息(特别是关于内存中的内容......具体来说,出现“访问冲突”错误的地方是什么)
另外,我的应用程序使用 Lua 和 Luabind,可能错误是由 .lua 脚本引起的,但我不知道如何调试。
【问题讨论】:
-
它是多线程应用程序吗?
-
我怀疑崩溃是随机的
-
原因不太可能是随机的(悬挂指针、双重删除、内存损坏),但症状将是随机的(或者更具体地说是非确定性的)
-
Mr.Speeder,您打算如何进行?这是一个需要解决的有趣问题。
-
我仍然有随机崩溃,这非常罕见(即使尝试触发它们,最近也失败了......),我也开始保存所有 Dr. MingW 崩溃转储,每次它报告一个不同的东西(即使它以相同的方式崩溃)并且一旦 Dr.MingW 本身崩溃,同时试图加载一个“无限”堆栈(即:两个十六进制代码在堆栈中交替,永远......过了一会儿它开始打印它们的内存用完了,然后自己崩溃了)
标签: c++ debugging crash lua mingw