KCrash Namespace Reference


typedef QFlags< CrashFlagCrashFlags
typedef void(* HandlerType) (int)


enum  CrashFlag { KeepFDs = 1 , SaferDialog = 2 , AlwaysDirectly , AutoRestart = 8 }


KCRASH_EXPORT HandlerType crashHandler ()
KCRASH_EXPORT void defaultCrashHandler (int signal)
KCRASH_EXPORT HandlerType emergencySaveFunction ()
std::optional< ExceptionMetadata > exceptionMetadata ()
KCRASH_EXPORT void initialize ()
KCRASH_EXPORT bool isDrKonqiEnabled ()
void setApplicationFilePath (const QString &filePath)
KCRASH_EXPORT void setCrashHandler (HandlerType handler=defaultCrashHandler)
KCRASH_EXPORT void setDrKonqiEnabled (bool enabled)
KCRASH_EXPORT void setEmergencySaveFunction (HandlerType saveFunction=nullptr)
KCRASH_EXPORT void setErrorMessage (const QString &message)
KCRASH_EXPORT void setFlags (KCrash::CrashFlags flags)
void startProcess (int argc, const char *argv[], bool waitAndExit)

Detailed Description

This namespace contains functions to handle crashes.

It allows you to set a crash handler function that will be called when your application crashes and also provides a default crash handler that implements the following functionality:

  • Launches the KDE crash display application (DrKonqi) to let the user report the bug and/or debug it.
  • Calls an emergency save function that you can set with setEmergencySaveFunction() to attempt to save the application's data.
  • Autorestarts your application.
All the above features are optional and you need to enable them explicitly. By default, the defaultCrashHandler() will not do anything. However, if you are using KApplication, it will by default enable launching DrKonqi on crashes, unless the –nocrashhandler argument was passed on the command line or the environment variable KDE_DEBUG is set to any value.

Typedef Documentation

◆ CrashFlags

Stores a combination of CrashFlag values.

Definition at line 117 of file kcrash.h.

◆ HandlerType

typedef void(* KCrash::HandlerType) (int)

Typedef for a pointer to a crash handler function.

The function's argument is the number of the signal.

Definition at line 62 of file kcrash.h.

Enumeration Type Documentation

◆ CrashFlag

Options to determine how the default crash handler should behave.

See also

don't close all file descriptors immediately


start DrKonqi without arbitrary disk access


never try to to start DrKonqi via kdeinit. Use fork() and exec() instead.

This is now the default, and does not need to be set.

autorestart this application. Only sensible for KUniqueApplications.


Definition at line 107 of file kcrash.h.

Function Documentation

◆ crashHandler()

KCrash::HandlerType KCrash::crashHandler ( )

Returns the installed crash handler.

the crash handler

Definition at line 434 of file kcrash.cpp.

◆ defaultCrashHandler()

void KCrash::defaultCrashHandler ( int signal)

The default crash handler.

Do not call this function directly. Instead, use setCrashHandler() to set it as your application's crash handler.

signalthe signal number
If you implement your own crash handler, you will have to call this function from your implementation if you want to use the features of this namespace.

Definition at line 457 of file kcrash.cpp.

◆ emergencySaveFunction()

KCrash::HandlerType KCrash::emergencySaveFunction ( )

Returns the currently set emergency save function.

the emergency save function

Definition at line 285 of file kcrash.cpp.

◆ exceptionMetadata()

std::optional< ExceptionMetadata > KCrash::exceptionMetadata ( )

Definition at line 34 of file exception.cpp.

◆ initialize()

void KCrash::initialize ( )

Initialize KCrash.

This does nothing if $KDE_DEBUG is set.

Call this in your main() to ensure that the crash handler is always launched.


Definition at line 208 of file kcrash.cpp.

◆ isDrKonqiEnabled()

bool KCrash::isDrKonqiEnabled ( )

Returns true if DrKonqi is set to be launched from the crash handler or false otherwise.


Definition at line 376 of file kcrash.cpp.

◆ setApplicationFilePath()

void KCrash::setApplicationFilePath ( const QString & filePath)

Definition at line 330 of file kcrash.cpp.

◆ setCrashHandler()

void KCrash::setCrashHandler ( HandlerType handler = defaultCrashHandler)

Install a function to be called when a crash occurs.

A crash occurs when one of the following signals is caught: SIGSEGV, SIGBUS, SIGFPE, SIGILL, SIGABRT.

handlerthis can be one of:
  • null, in which case signal catching is disabled (by setting the signal handler for the crash signals to SIG_DFL)
  • a user defined function in the form: static (if in a class) void myCrashHandler(int);
  • if handler is omitted, the default crash handler is installed
If you use setDrKonqiEnabled(true), setEmergencySaveFunction(myfunc) or setFlags(AutoRestart), you do not need to call this function explicitly. The default crash handler is automatically installed by those functions if needed. However, if you set a custom crash handler, those functions will not change it.

Definition at line 381 of file kcrash.cpp.

◆ setDrKonqiEnabled()

void KCrash::setDrKonqiEnabled ( bool enabled)

Enables or disables launching DrKonqi from the crash handler.

By default, launching DrKonqi is enabled when QCoreApplication is created. To disable it:

void disableDrKonqi()
KCRASH_EXPORT void setDrKonqiEnabled(bool enabled)
Enables or disables launching DrKonqi from the crash handler.
Definition kcrash.cpp:353
It is the crash handler's responsibility to launch DrKonqi. Therefore, if no crash handler is set, this method also installs the default crash handler to ensure that DrKonqi will be launched.

Definition at line 353 of file kcrash.cpp.

◆ setEmergencySaveFunction()

void KCrash::setEmergencySaveFunction ( HandlerType saveFunction = nullptr)

Installs a function which should try to save the application's data.

It is the crash handler's responsibility to call this function. Therefore, if no crash handler is set, the default crash handler is installed to ensure the save function will be called.
saveFunctionthe handler to install

Definition at line 272 of file kcrash.cpp.

◆ setErrorMessage()

void KCrash::setErrorMessage ( const QString & message)

Allows providing information to be included in the bug report.


Definition at line 924 of file kcrash.cpp.

◆ setFlags()

void KCrash::setFlags ( KCrash::CrashFlags flags)

Set options to determine how the default crash handler should behave.

flagsORed together CrashFlags

Definition at line 315 of file kcrash.cpp.

◆ startProcess()

void KCrash::startProcess ( int argc,
const char * argv[],
bool waitAndExit )

Definition at line 705 of file kcrash.cpp.

This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Tue Mar 26 2024 11:15:15 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.