Documentación de Steamworks
Informe de errores de Steam
Nota: La notificación de errores de Steam solo es compatible con aplicaciones para Windows de 32 bits.

Descripción general

Si la notificación de errores está habilitada, Steam cargará automáticamente minivolcados de cualquier excepción cuando se produzcan 10 excepciones similares.

Puedes ver los detalles de cada fallo en la página Informes de errores del backend de asociados de Steamworks.

Los minivolcados siempre se almacenan localmente en el equipo antes de enviarlos a Steam. Si necesitas examinar alguno de ellos directamente, deberías encontrarlo en el directorio de instalación del juego.

Instrucciones de uso

La notificación de errores de Steam es fácil de usar si ya estás usando el control estructurado de excepciones.

Debes enlazar con la función de Win32 _set_se_translator que llama a la función que hayas creado para manejar el minivolcado. En esa función, puedes usar SteamAPI_SetMiniDumpComment y SteamAPI_WriteMiniDump para notificar a Steam el bloqueo inminente.

Ejemplo

#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // puedes crear un set de comentario arbitrario en esta sección de minivolcados, // es posible que pongas el nivel en el que el usuario jugaba, cuántos jugadores están en el servidor, // cuánto espacio libre hay, etc... SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // El 0 aquí es el id. de compilación, nosotros no lo configuramos 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 ) { // Aquí lo único que hacemos es llamar a la función principal después de configurar el traductor // esto nos permite encontrar excepciones y reportar errores en Steam. // // Ten en cuenta que debes configurar el indicador del compilador correctamente para activar este control estructurado // de excepciones para que este método de configuración en particular funcione. if ( IsDebuggerPresent() ) { // No queremos ocultar excepciones (o reportarlas a Steam) durante una depuración. // Si quieres saltar el paso por medio de una excepción del "handler" pega un depurador // después de iniciar el juego fuera del depurador. return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // este bloque de prueba permite trabajar al traductor SE { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

Requisitos

La API de notificación de errores solo es compatible con aplicaciones de 32 bits en Windows.