diff --git a/src/data/debuggers/internal/gdbrc b/src/data/debuggers/internal/gdbrc --- a/src/data/debuggers/internal/gdbrc +++ b/src/data/debuggers/internal/gdbrc @@ -75,4 +75,4 @@ [KCrash] Exec=gdb -nw -n -batch -x %tempfile -p %pid %execpath -BatchCommands=set width 200\nthread\nthread apply all bt +BatchCommands=set width 200\nprint "Content of s_kcrashErrorMessage:"\nprint s_kcrashErrorMessage.constData()\nthread\nthread apply all bt diff --git a/src/data/debuggers/internal/lldbrc b/src/data/debuggers/internal/lldbrc --- a/src/data/debuggers/internal/lldbrc +++ b/src/data/debuggers/internal/lldbrc @@ -38,4 +38,4 @@ [KCrash] Exec=lldb -p %pid ExecInputFile=%tempfile -BatchCommands=settings set term-width 200\nthread info\nbt all\ndetach +BatchCommands=settings set term-width 200\nprint "Content of s_kcrashErrorMessage:"\nprint s_kcrashErrorMessage.constData()\nthread info\nbt all\ndetach diff --git a/src/tests/crashtest/crashtest.cpp b/src/tests/crashtest/crashtest.cpp --- a/src/tests/crashtest/crashtest.cpp +++ b/src/tests/crashtest/crashtest.cpp @@ -36,7 +36,7 @@ #include #include -enum CrashType { Crash, Malloc, Div0, Assert, QAssert, Threads }; +enum CrashType { Crash, Malloc, Div0, Assert, QAssert, Threads, FatalErrorMessage }; struct SomeStruct { @@ -88,6 +88,12 @@ QtConcurrent::blockingMap(foo, map_function); } +void do_fatalErrorMessage() +{ + KCrash::setErrorMessage(QStringLiteral("So long, my friends...")); + qFatal("So long!\n"); +} + void level4(int t) { if (t == Malloc) @@ -100,6 +106,8 @@ do_qassert(); else if (t == Threads) do_threads(); + else if (t == FatalErrorMessage) + do_fatalErrorMessage(); else do_crash(); } @@ -131,7 +139,7 @@ QCommandLineParser parser; parser.addOption(QCommandLineOption(QStringLiteral("autorestart"), i18n("Automatically restart"))); parser.addOption(QCommandLineOption(QStringLiteral("kdeinit"), i18n("Start DrKonqi using kdeinit"))); - parser.addPositionalArgument(QStringLiteral("type"), i18n("Type of crash."), QStringLiteral("crash|malloc|div0|assert|threads")); + parser.addPositionalArgument(QStringLiteral("type"), i18n("Type of crash."), QStringLiteral("crash|malloc|div0|assert|threads|fatal")); aboutData.setupCommandLine(&parser); parser.process(app); aboutData.processCommandLine(&parser); @@ -157,6 +165,8 @@ crashtype = QAssert; else if (type == "threads") crashtype = Threads; + else if (type == "fatal") + crashtype = FatalErrorMessage; level1(crashtype); return app.exec(); }