/usr/include/KF5/KCrash/kcrash.h is in libkf5crash-dev 5.44.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | /*
* This file is part of the KDE Libraries
* Copyright (C) 2000 Timo Hummel <timo.hummel@sap.com>
* Tom Braun <braunt@fh-konstanz.de>
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public License
* along with this library; see the file COPYING.LIB. If not, write to
* the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301, USA.
*
*/
#ifndef KCRASH_H
#define KCRASH_H
#include <kcrash_export.h>
#include <qglobal.h>
class QString;
/**
* 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:
* @li Launches the KDE crash display application (DrKonqi) to let
* the user report the bug and/or debug it.
* @li Calls an emergency save function that you can set with
* setEmergencySaveFunction() to attempt to save the application's data.
* @li Autorestarts your application.
*
* @note 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.
*/
namespace KCrash
{
/**
* Initialize KCrash.
*
* This does nothing if $KDE_DEBUG is set.
*
* Call this in your main() to ensure that the crash handler is always launched.
* @since 5.15
*/
KCRASH_EXPORT void initialize();
/**
* The default crash handler.
* Do not call this function directly. Instead, use
* setCrashHandler() to set it as your application's crash handler.
* @param signal the signal number
* @note 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.
*/
KCRASH_EXPORT void defaultCrashHandler(int signal);
/**
* Typedef for a pointer to a crash handler function.
* The function's argument is the number of the signal.
*/
typedef void (*HandlerType)(int);
/**
* 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.
* @param handler this can be one of:
* @li null, in which case signal catching is disabled
* (by setting the signal handler for the crash signals to SIG_DFL)
* @li a user defined function in the form:
* static (if in a class) void myCrashHandler(int);
* @li if handler is omitted, the default crash handler is installed
* @note 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.
*/
KCRASH_EXPORT void setCrashHandler(HandlerType handler = defaultCrashHandler);
/**
* Returns the installed crash handler.
* @return the crash handler
*/
KCRASH_EXPORT HandlerType crashHandler();
/**
* Installs a function which should try to save the application's data.
* @note 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.
* @param saveFunction the handler to install
*/
KCRASH_EXPORT void setEmergencySaveFunction(HandlerType saveFunction = nullptr);
/**
* Returns the currently set emergency save function.
* @return the emergency save function
*/
KCRASH_EXPORT HandlerType emergencySaveFunction();
/**
* Options to determine how the default crash handler should behave.
*/
enum CrashFlag {
KeepFDs = 1, ///< don't close all file descriptors immediately
SaferDialog = 2, ///< start DrKonqi without arbitrary disk access
AlwaysDirectly = 4, ///< never try to to start DrKonqi via kdeinit. Use fork() and exec() instead.
AutoRestart = 8 ///< autorestart this application. Only sensible for KUniqueApplications. @since 4.1.
};
Q_DECLARE_FLAGS(CrashFlags, CrashFlag)
/**
* Set options to determine how the default crash handler should behave.
* @param flags ORed together CrashFlags
*/
KCRASH_EXPORT void setFlags(KCrash::CrashFlags flags);
/**
* Enables or disables launching DrKonqi from the crash handler.
* By default, launching DrKonqi is enabled when QCoreApplication is created.
* To disable it:
* @code
void disableDrKonqi()
{
KCrash::setDrKonqiEnabled(false);
}
Q_CONSTRUCTOR_FUNCTION(disableDrKonqi)
* \endcode
* @note 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.
* @since 4.5
*/
KCRASH_EXPORT void setDrKonqiEnabled(bool enabled);
/**
* Returns true if DrKonqi is set to be launched from the crash handler or false otherwise.
* @since 4.5
*/
KCRASH_EXPORT bool isDrKonqiEnabled();
}
Q_DECLARE_OPERATORS_FOR_FLAGS(KCrash::CrashFlags)
#endif
|