Steamworks-Dokumentation
Steam-Fehlerberichte
Hinweis: Steam-Fehlerberichte werden nur für 32-Bit-Windows-Anwendungen unterstützt.

Übersicht

Wenn Steam-Fehlerberichte implementiert sind, lädt Steam automatisch Minidumps hoch, nachdem 10 ähnliche Ausnahmen ausgelöst wurden.

Auf der Fehlerberichteseite im Steamworks-Partner-Backend finden Sie Details zu jedem Absturz.

Minidumps werden immer lokal auf dem Computer gespeichert, bevor sie auf Steam hochgeladen werden. Wenn Sie einen Minidump direkt untersuchen möchten, finden Sie diesen im Installationsverzeichnis des Spiels.

Implementation

Steam-Fehlerberichte sind sehr einfach zu handhaben, wenn Sie bereits eine strukturierte Ausnahmebehandlung verwenden.

Binden Sie die Win32-Funktion _set_se_translator ein. Diese ruft eine Funktion zur Behandlung des Minidumps auf. In dieser Funktion können Sie SteamAPI_SetMiniDumpComment und SteamAPI_WriteMiniDump verwenden, um Steam über einen bevorstehenden Absturz zu benachrichtigen.

Beispiel

#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // Sie können hier eine beliebige Bemerkung im Minidump einfügen. // Sie können einfügen, welches Level der Spieler gespielt hat, wie viele Spieler auf dem Server waren, // wie viel Speicher zur Verfügung stand usw. SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // Die 0 hier steht für eine Build-ID. Diese wird nicht von uns festgelegt. SteamAPI_WriteMiniDump( nExceptionCode, pException, 0 ); } int RealMain( HINSTANCE hInstance, LPSTR lpCmdLine, int nCmdShow ) { __debugbreak(); return 0; } int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // Hier rufen wir lediglich die echte Hauptfunktion auf, nachdem wir den SE-Translator angelegt haben. // Dies ermöglicht es uns, Ausnahmen abzufangen und Fehler an Steam zu senden. // // Hinweis: Setzen Sie korrekte Compilermarkierungen, um die Behandlung von strukturierten Ausnahmen zu ermöglichen. // Diese spezielle Einrichtungsmethode funktioniert sonst nicht. if ( IsDebuggerPresent() ) { // Wir wollen beim Debuggen keine Ausnahmen maskieren (oder an Steam senden). // Wenn Sie durch Ihren Ausnahmehandler gehen möchten, hängen Sie einen Debugger an, // nachdem Sie das Spiel außerhalb des Debuggers gestartet haben. return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // Dieser Try-Block ermöglicht die Arbeit des SE-Translators. { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

Anforderungen

Die API für Fehlerberichte unterstützt momentan nur 32-Bit-Anwendungen unter Windows.