分析崩溃

时间:2012-07-19 15:05:14

标签: c++ windows debugging

我正在编写一个C ++软件图像处理工具。该工具工作正常,但它突然停止,它永远不会发送任何异常或任何崩溃或什么都不能让我走哪条线或哪个区域崩溃。

如何确定那种情况下的错误代码?

3 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

首先,它听起来更像是一个无限循环,死锁,或者就像你正在使用你所有的系统资源一样,它只是放慢速度并且花费很长时间(可能是无限的)。如果是这种情况,你必须通过调试找到它。


您可以尝试的事情 - 不一定按此顺序:

  1. 查找您正在使用的共享变量。你有机会吗? 有线程和互斥锁的死锁?考虑一下并尝试 解决它。

  2. 检查未初始化的变量/指针的使用情况。有时 (很少)当你调用undefined时,你会得到非常奇怪的行为 行为 - 我不是Windows C ++开发人员(我在Linux上工作),但它 这不是我第一次看到来自分段错误的锁定。

  3. 将错误输出(std :: cerr / stderror)添加到处理逻辑中 你可以看到它崩溃了多远。之后,将条件设置为 赶上那一点,这样你就可以看到它发生在 调试器并查看变量的状态以及可能的变量 错。

  4. 执行堆栈跟踪,以便查看最受欢迎的呼叫 最近。这至少会让你知道最后一个功能链 已执行。

答案 1 :(得分:0)

您之前是否使用过堆栈跟踪?

查找有关如何使用它们的MSDN文档。它们具有不同类型的堆栈跟踪,具体取决于您的应用程序。

答案 2 :(得分:0)

你可以

  1. 使用调试器
  2. 将日志记录代码添加到您的程序
  3. 从程序中删除代码段,直到它开始工作
  4. 从第一个开始。