Documentation Steamworks
Signalement d'erreurs de Steam
Remarque : le signalement d'erreurs sur Steam n'est compatible qu'avec les applications Windows 32 bits.

Présentation

Si le signalement d'erreur de Steam est implémenté, alors Steam téléchargera automatiquement des minidumps pour toutes les exceptions une fois que 10 exceptions similaires auront été envoyées.

Vous pouvez consulter les informations sur chaque incident sur la page des rapports d'erreur du back-end des partenaires Steamworks.

Les minidumps sont toujours stockés localement sur l'ordinateur avant leur téléchargement sur Steam. Si vous avez besoin d'en examiner un directement, vous devriez le trouver dans le répertoire d'installation du jeu.

Implémentation

Le signalement d'erreurs de Steam est facile à utiliser si vous utilisez déjà la gestion structurée des exceptions.

Vous devez accrocher la fonction Win32 _set_se_translator qui appelle une fonction que vous créez pour gérer le minidump. Dans cette fonction, vous pouvez utiliser SteamAPI_SetMiniDumpComment et SteamAPI_WriteMiniDump pour notifier Steam du plantage imminent.

Exemple :

#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // Vous pouvez créer et définir un commentaire arbitraire à inclure dans le minidump ici, // par exemple le niveau auquel le joueur était en train de jouer, le nombre de joueurs sur le serveur, // la quantité de mémoire disponible, etc. SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // Le 0 ici est un ID de build, nous ne le définissons pas 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 ) { // Nous nous contentons ici d'appeler la véritable fonction main après avoir configuré notre se_translator. // Cela nous permet de récupérer les exceptions et rapports d'erreur sur Steam. // // Notez que vous devez définir vos indicateurs du compilateur de façon à activer la gestion des // exceptions structurées pour que cette configuration particulière de méthode fonctionne. if ( IsDebuggerPresent() ) { // On ne veut pas masquer les exceptions (ou les signaler à Steam !) quand on débogue. // Si vous souhaitez passer par le gestionnaire d'exceptions, attachez un débogueur // après avoir lancé le jeu hors du débogueur. return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // ce bloc try permet au SE_translator de fonctionner { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

Conditions requises

L'API de signalement des erreurs est actuellement compatible uniquement avec les applications 32 bits sous Windows.