如何在Qt中模拟崩溃

How to simulate a crash in Qt?

本文关键字:模拟 崩溃 Qt      更新时间:2023-10-16

这个问题很简单,但我在网上找不到任何解决方案。

是否可以强制Qt应用程序崩溃

这只是出于开发目的,因为我想对崩溃报告进行实验。

记住,我们在StackOverflow上:-)

怎么样:

int foo(int p) {
    return foo(p)+foo(p);
}
foo(0);

PS对于更温和、更特定于Qt的东西,你可以尝试qFatal:

qFatal("boom");

您可以抛出异常,但永远不会捕获它,这可能是您想要的,也可能不是。

编辑:

这是我能找到的跨平台最稳健的解决方案:http://en.cppreference.com/w/cpp/utility/program/raise

如果您使用的是*nix系统,则可以使用提升呼叫。

我想你在做崩溃报告时已经是特定平台的了,我知道目前没有办法跨平台。我不知道有什么类似的解决方案可以在windows环境中工作,可能已经存在了

您可以使用信号Linux库触发segfault:

#include <signal.h>
void raiseSegfault()
{
    int error = raise(SIGSEGV);
    if (error != 0) {
        std::cout << "cannot raise segfault" << std::endl;
        exit(0);
    }
}

这将可靠地引发分段故障或退出,并且不会依赖于未定义的行为。