Steamworks 文獻庫
Steam 錯誤回報
備註:Steam 錯誤回報僅支援 Windows 32 位元應用程式。

概覽

若實作了 Steam 錯誤回報,在擲回了 10 個類似的例外狀況之後,Steam 將自動上傳任何例外狀況的小型傾印。

您可從 Steamworks 合作夥伴後端的錯誤回報頁面,查看每一項錯誤的詳細資訊。

小型傾印通常會先儲存在本機電腦中,隨後再上傳至 Steam。 如果您需要直接檢查其中一個,在遊戲安裝目錄中應能夠找到。

實作方法

如果您已在使用結構化例外狀況處理,要使用 Steam 錯誤回報便很簡單。

您必須掛勾 _set_se_translator 函式。此函式會呼叫您建立用來處理小型傾印的函式。 您可使用該函式中的 SteamAPI_SetMiniDumpCommentSteamAPI_WriteMiniDump 通知 Steam 當機即將發生。

範例

#ifdef _WIN32 #include <Windows.h> void MiniDumpFunction( unsigned int nExceptionCode, EXCEPTION_POINTERS *pException ) { // 這裡可任意建立與設置您希望寫入小型傾印中的註解 // 可以是使用者目前的關卡、伺服器上的玩家人數 // 有多少可用的記憶體等等 SteamAPI_SetMiniDumpComment( "Minidump comment: SteamworksExample.exe/n" ); // 這裡的 0 為組建 ID,我們不設定 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 ) { // 這裡就只是設置完編譯器後呼叫主要函式的地方 // 從這裡攔截例外並將錯誤回報給 Steam // // 請注意,您的編譯器旗標必須正確設定,啟用結構化例外狀況處理後 // 這裡設置的方法才能順利運作 if ( IsDebuggerPresent() ) { // 偵錯時不須遮罩例外(或回報至 Steam!) // 如果您希望逐步檢查例外狀況處理常式 // 請先於偵錯工具外執行遊戲,再連接上偵錯工具 return RealMain( lpCmdLine, hInstance, nCmdShow ); } _set_se_translator( MiniDumpFunction ); try // 這個 try 區塊讓 SE 轉譯器得以運作 { return RealMain( hInstance, lpCmdLine, nCmdShow ); } catch( ... ) { return -1; } } #endif

需求

錯誤回報 API 目前僅支援 Windows 系統 32 位元應用程式。