我的C ++ / QML应用程序崩溃了。来自核心转储的堆栈跟踪并不具有启发性,因此我正在使用计划B:从应用程序中迭代删除内容,直到崩溃停止发生(a.k.a。生成最小的测试用例)。问题是,要查看错误是否仍然存在,我需要重新运行应用程序3-4次,直到我最终遇到崩溃。这需要时间。 查看错误是否仍然存在的更快方法是什么?
我在想,如果我在valgrind的一个工具(可能是Memcheck,Helgrind,DRD)中运行应用程序,我可能会更加一致地获得有关错误的报告。我刚试过Memcheck,但它让应用程序启动的速度非常慢,所以这不是一个改进。
我正在Linux上开发。
答案 0 :(得分:0)
我假设您想要在没有进行多次测试运行的情况下达到断点。我也假设你知道导致崩溃的原因,但它不会一直崩溃。
您可以创建一个新的main方法,该方法调用应用程序中的根类/类,并调用用户为导致崩溃所执行的相同功能。你可以迭代这个直到崩溃发生(即只是撕掉所有东西并一次又一次地做)或使用线程来帮助和暴力导致崩溃。我这样做是为了在程序中快速强制零星崩溃(我不会假装这是好习惯,但如果没有更好的建议可能有帮助。)