如何查看bug是否仍然存在,如果它不能始终明显地显示出来?

时间:2017-06-09 14:48:10

标签: c++ debugging crash qml valgrind

我的C ++ / QML应用程序崩溃了。来自核心转储的堆栈跟踪并不具有启发性,因此我正在使用计划B:从应用程序中迭代删除内容,直到崩溃停止发生(a.k.a。生成最小的测试用例)。问题是,要查看错误是否仍然存在,我需要重新运行应用程序3-4次,直到我最终遇到崩溃。这需要时间。 查看错误是否仍然存在的更快方法是什么?

我在想,如果我在valgrind的一个工具(可能是Memcheck,Helgrind,DRD)中运行应用程序,我可能会更加一致地获得有关错误的报告。我刚试过Memcheck,但它让应用程序启动的速度非常慢,所以这不是一个改进。

我正在Linux上开发。

1 个答案:

答案 0 :(得分:0)

我假设您想要在没有进行多次测试运行的情况下达到断点。我也假设你知道导致崩溃的原因,但它不会一直崩溃。

您可以创建一个新的main方法,该方法调用应用程序中的根类/类,并调用用户为导致崩溃所执行的相同功能。你可以迭代这个直到崩溃发生(即只是撕掉所有东西并一次又一次地做)或使用线程来帮助和暴力导致崩溃。我这样做是为了在程序中快速强制零星崩溃(我不会假装这是好习惯,但如果没有更好的建议可能有帮助。)