Helper class for creating crash logs. More...
#include <crashlog.h>
Public Member Functions | |
virtual | ~CrashLog () |
Stub destructor to silence some compilers. | |
char * | FillCrashLog (char *buffer, const char *last) const |
Fill the crash log buffer with all data of a crash log. | |
bool | WriteCrashLog (const char *buffer, char *filename, const char *filename_last) const |
Write the crash log to a file. | |
virtual int | WriteCrashDump (char *filename, const char *filename_last) const |
Write the (crash) dump to a file. | |
bool | WriteSavegame (char *filename, const char *filename_last) const |
Write the (crash) savegame to a file. | |
bool | WriteScreenshot (char *filename, const char *filename_last) const |
Write the (crash) screenshot to a file. | |
bool | MakeCrashLog () const |
Makes the crash log, writes it to a file and then subsequently tries to make a crash dump and crash savegame. | |
Static Public Member Functions | |
static void | InitialiseCrashLog () |
Initialiser for crash logs; do the appropriate things so crashes are handled by our crash handler instead of returning straight to the OS. | |
static void | SetErrorMessage (const char *message) |
Sets a message for the error message handler. | |
static void | AfterCrashLogCleanup () |
Try to close the sound/video stuff so it doesn't keep lingering around incorrect video states or so, e.g. | |
Protected Member Functions | |
virtual char * | LogOSVersion (char *buffer, const char *last) const =0 |
Writes OS' version to the buffer. | |
virtual char * | LogCompiler (char *buffer, const char *last) const |
Writes compiler (and its version, if available) to the buffer. | |
virtual char * | LogError (char *buffer, const char *last, const char *message) const =0 |
Writes actually encountered error to the buffer. | |
virtual char * | LogStacktrace (char *buffer, const char *last) const =0 |
Writes the stack trace to the buffer, if there is information about it available. | |
virtual char * | LogRegisters (char *buffer, const char *last) const |
Writes information about the data in the registers, if there is information about it available. | |
virtual char * | LogModules (char *buffer, const char *last) const |
Writes the dynamically linked libraries/modules to the buffer, if there is information about it available. | |
char * | LogOpenTTDVersion (char *buffer, const char *last) const |
Writes OpenTTD's version to the buffer. | |
char * | LogConfiguration (char *buffer, const char *last) const |
Writes the (important) configuration settings to the buffer. | |
char * | LogLibraries (char *buffer, const char *last) const |
Writes information (versions) of the used libraries. | |
char * | LogGamelog (char *buffer, const char *last) const |
Writes the gamelog data to the buffer. | |
Static Private Member Functions | |
static void | GamelogFillCrashLog (const char *s) |
Helper function for printing the gamelog. | |
Static Private Attributes | |
static const char * | message = NULL |
Pointer to the error message. | |
static char * | gamelog_buffer = NULL |
Temporary 'local' location of the buffer. | |
static const char * | gamelog_last = NULL |
Temporary 'local' location of the end of the buffer. |
Helper class for creating crash logs.
Definition at line 18 of file crashlog.h.
virtual CrashLog::~CrashLog | ( | ) | [inline, virtual] |
Stub destructor to silence some compilers.
Definition at line 91 of file crashlog.h.
void CrashLog::AfterCrashLogCleanup | ( | ) | [static] |
Try to close the sound/video stuff so it doesn't keep lingering around incorrect video states or so, e.g.
keeping dpmi disabled.
Definition at line 470 of file crashlog.cpp.
References _music_driver, _sound_driver, _video_driver, and Driver::Stop().
Referenced by HandleCrash().
char * CrashLog::FillCrashLog | ( | char * | buffer, | |
const char * | last | |||
) | const |
Fill the crash log buffer with all data of a crash log.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 298 of file crashlog.cpp.
References _date, _date_fract, ConvertDateToYMD(), YearMonthDay::day, LogCompiler(), LogConfiguration(), LogError(), LogGamelog(), LogLibraries(), LogModules(), LogOpenTTDVersion(), LogOSVersion(), LogRegisters(), LogStacktrace(), message, YearMonthDay::month, seprintf(), and YearMonthDay::year.
Referenced by CrashLogOSX::MakeCrashLog(), and MakeCrashLog().
void CrashLog::GamelogFillCrashLog | ( | const char * | s | ) | [static, private] |
Helper function for printing the gamelog.
s | the string to print. |
Definition at line 273 of file crashlog.cpp.
References gamelog_buffer, gamelog_last, and seprintf().
Referenced by LogGamelog().
void CrashLog::InitialiseCrashLog | ( | ) | [static] |
Initialiser for crash logs; do the appropriate things so crashes are handled by our crash handler instead of returning straight to the OS.
Definition at line 249 of file crashlog_osx.cpp.
References _signals_to_handle, endof, and HandleCrash().
char * CrashLog::LogCompiler | ( | char * | buffer, | |
const char * | last | |||
) | const [protected, virtual] |
Writes compiler (and its version, if available) to the buffer.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 42 of file crashlog.cpp.
References seprintf().
Referenced by FillCrashLog().
char * CrashLog::LogConfiguration | ( | char * | buffer, | |
const char * | last | |||
) | const [protected] |
Writes the (important) configuration settings to the buffer.
E.g. graphics set, sound set, blitter and AIs.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 123 of file crashlog.cpp.
References _current_language, _local_company, _music_driver, _network_server, _networking, _sound_driver, _video_driver, LanguageMetadata::file, BlitterFactoryBase::GetCurrentBlitter(), Game::GetInfo(), ScriptInfo::GetName(), Driver::GetName(), BaseMedia< SoundsSet >::GetUsedSet(), BaseMedia< MusicSet >::GetUsedSet(), BaseMedia< GraphicsSet >::GetUsedSet(), ScriptInfo::GetVersion(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem< Tpool >::index, BaseSet< T, Tnum_files, Tsearch_in_tars >::name, seprintf(), and BaseSet< T, Tnum_files, Tsearch_in_tars >::version.
Referenced by FillCrashLog().
virtual char* CrashLog::LogError | ( | char * | buffer, | |
const char * | last, | |||
const char * | message | |||
) | const [protected, pure virtual] |
Writes actually encountered error to the buffer.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. | |
message | Message passed to use for possible errors. Can be NULL. |
'
' character after the buffer. Implemented in CrashLogOSX, CrashLogUnix, and CrashLogWindows.
Referenced by FillCrashLog().
char * CrashLog::LogGamelog | ( | char * | buffer, | |
const char * | last | |||
) | const [protected] |
Writes the gamelog data to the buffer.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 284 of file crashlog.cpp.
References gamelog_buffer, gamelog_last, GamelogFillCrashLog(), GamelogPrint(), and seprintf().
Referenced by FillCrashLog().
char * CrashLog::LogLibraries | ( | char * | buffer, | |
const char * | last | |||
) | const [protected] |
Writes information (versions) of the used libraries.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 207 of file crashlog.cpp.
References seprintf().
Referenced by FillCrashLog().
char * CrashLog::LogModules | ( | char * | buffer, | |
const char * | last | |||
) | const [protected, virtual] |
Writes the dynamically linked libraries/modules to the buffer, if there is information about it available.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Reimplemented in CrashLogWindows.
Definition at line 72 of file crashlog.cpp.
Referenced by FillCrashLog().
char * CrashLog::LogOpenTTDVersion | ( | char * | buffer, | |
const char * | last | |||
) | const [protected] |
Writes OpenTTD's version to the buffer.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Definition at line 84 of file crashlog.cpp.
References seprintf(), and TTD_LITTLE_ENDIAN.
Referenced by FillCrashLog().
virtual char* CrashLog::LogOSVersion | ( | char * | buffer, | |
const char * | last | |||
) | const [protected, pure virtual] |
Writes OS' version to the buffer.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Implemented in CrashLogOSX, CrashLogUnix, and CrashLogWindows.
Referenced by FillCrashLog().
char * CrashLog::LogRegisters | ( | char * | buffer, | |
const char * | last | |||
) | const [protected, virtual] |
Writes information about the data in the registers, if there is information about it available.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Reimplemented in CrashLogWindows.
Definition at line 66 of file crashlog.cpp.
Referenced by FillCrashLog().
virtual char* CrashLog::LogStacktrace | ( | char * | buffer, | |
const char * | last | |||
) | const [protected, pure virtual] |
Writes the stack trace to the buffer, if there is information about it available.
buffer | The begin where to write at. | |
last | The last position in the buffer to write to. |
'
' character after the buffer. Implemented in CrashLogOSX, CrashLogUnix, and CrashLogWindows.
Referenced by FillCrashLog().
bool CrashLog::MakeCrashLog | ( | ) | const |
Makes the crash log, writes it to a file and then subsequently tries to make a crash dump and crash savegame.
It uses DEBUG to write information like paths to the console.
Definition at line 402 of file crashlog.cpp.
References FillCrashLog(), lastof, WriteCrashDump(), WriteCrashLog(), WriteSavegame(), and WriteScreenshot().
Referenced by HandleCrash().
void CrashLog::SetErrorMessage | ( | const char * | message | ) | [static] |
Sets a message for the error message handler.
message | The error message of the error. |
Definition at line 461 of file crashlog.cpp.
References message.
Referenced by error().
int CrashLog::WriteCrashDump | ( | char * | filename, | |
const char * | filename_last | |||
) | const [virtual] |
Write the (crash) dump to a file.
MAX_PATH
big. filename | Output for the filename of the written file. | |
filename_last | The last position in the filename buffer. |
Definition at line 346 of file crashlog.cpp.
Referenced by MakeCrashLog().
bool CrashLog::WriteCrashLog | ( | const char * | buffer, | |
char * | filename, | |||
const char * | filename_last | |||
) | const |
Write the crash log to a file.
MAX_PATH
big. buffer | The begin of the buffer to write to the disk. | |
filename | Output for the filename of the written file. | |
filename_last | The last position in the filename buffer. |
Definition at line 332 of file crashlog.cpp.
References _personal_dir, FioFCloseFile(), FioFOpenFile(), NO_DIRECTORY, and seprintf().
Referenced by CrashLogOSX::MakeCrashLog(), and MakeCrashLog().
bool CrashLog::WriteSavegame | ( | char * | filename, | |
const char * | filename_last | |||
) | const |
Write the (crash) savegame to a file.
MAX_PATH
big. filename | Output for the filename of the written file. | |
filename_last | The last position in the filename buffer. |
Definition at line 360 of file crashlog.cpp.
References _m, _personal_dir, GamelogEmergency(), NO_DIRECTORY, SaveOrLoad(), seprintf(), and SL_SAVE.
Referenced by CrashLogOSX::MakeCrashLog(), and MakeCrashLog().
bool CrashLog::WriteScreenshot | ( | char * | filename, | |
const char * | filename_last | |||
) | const |
Write the (crash) screenshot to a file.
MAX_PATH
big. filename | Output for the filename of the written file. | |
filename_last | The last position in the filename buffer. |
Definition at line 386 of file crashlog.cpp.
References _full_screenshot_name, MakeScreenshot(), SC_CRASHLOG, and strecpy().
Referenced by CrashLogOSX::MakeCrashLog(), and MakeCrashLog().
char * CrashLog::gamelog_buffer = NULL [static, private] |
Temporary 'local' location of the buffer.
Definition at line 24 of file crashlog.h.
Referenced by GamelogFillCrashLog(), and LogGamelog().
const char * CrashLog::gamelog_last = NULL [static, private] |
Temporary 'local' location of the end of the buffer.
Definition at line 27 of file crashlog.h.
Referenced by GamelogFillCrashLog(), and LogGamelog().
const char * CrashLog::message = NULL [static, private] |
Pointer to the error message.
Definition at line 21 of file crashlog.h.
Referenced by CrashLogOSX::DisplayCrashDialog(), FillCrashLog(), and SetErrorMessage().