我正在编写一个 C++ 软件图像处理工具。该工具工作正常,但突然停止并且它从不发送任何异常或任何崩溃或任何可以让我知道哪条线或哪个区域发生崩溃的信息。
在那种情况下我如何确定错误代码?
最佳答案
您可以做几件事:
不过,首先,这听起来更像是一个无限循环、死锁,或者就像您正在使用所有系统资源并且它只是在减慢速度并花费很长时间(可能是无限)。如果是这种情况,您将不得不通过调试找到它。
您可以尝试的事情 - 不一定按此顺序:
查找您正在使用的共享变量。你有没有机会 有线程和互斥体的死锁?想一想并尝试 修复它。
检查是否使用了未初始化的变量/指针。有时 (很少)当你调用 undefined 时你会得到非常奇怪的行为 行为 - 我不是 Windows C++ 开发人员(我在 Linux 上工作),但它 这不是我第一次看到段错误造成的锁定。
将错误输出 (std::cerr/stderror) 添加到您的处理逻辑中,以便 你可以看到它崩溃了多远。之后,设置条件为 在那一点附近捕获它,这样你就可以看到它发生在 调试器并查看变量的状态以及可能的状态 错了。
做一个堆栈跟踪,这样你就可以看到哪些调用被命中最多 最近。这至少会让你知道最后一个函数链 执行。
关于c++ - 分析崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11563728/