[C++][GameDev] エラー用トレース
共通処理クラスに、デバッグトレースの関数を作った。
/**
* デバッグトレース
*
* @param[in] a_pszFormat 書式
*/
void CCommon::Trace(const char* a_pszFormat, ...)
{
#ifdef _DEBUG
va_list pcParam; // 引数リスト
char szTrace[512]; // 出力文字列// 可変引数の取得開始
va_start(pcParam, a_pszFormat);
// 出力文字列の作成
_vsnprintf(szTrace, sizeof(szTrace),
a_pszFormat, pcParam);
// 可変引数の取得終了
va_end(pcParam);// デバッグトレース
OutputDebugString(szTrace);
#endif
}
この関数はエラー発生時とかに使う。
// エラー発生時
if (! bRet)
{
CCommon::Trace("Errror: %s %s\n",
__FUNCTION__, pszErrorMessage);
}
上のフォーマットだと、例えば、
「Errror: CDI::Init DirectInput8オブジェクトの作成に失敗」
って文字列が出力されるんだけど、いろんなとこでこのトレースは使われるわけなんで、出力フォーマットは必ず統一されるようにした方がいい。
それで、直接トレース関数を使うわけじゃなくて、エラー発生用に使うトレース関数を別に作っといた。
/**
* エラー用デバッグトレース
*
* @param[in] a_pszFunction 関数名
* @param[in] a_pszError エラーメッセージ
*/
void CCommon::TraceOfError(char* a_pszFunction, char* a_pszError)
{
CCommon::Trace("Errror: %s %s\n",
__FUNCTION__, pszErrorMessage);
}
とりあえず、エラー発生した関数名とエラーメッセージだけ出力すればいいかな。ということで、エラー発生時に書く処理はこれ↓。
// エラー発生時
if (! bRet)
{
CCommon::TraceOfError(__FUNCTION__, pszErrorMessage);
}
トラックバック(0)
このブログ記事を参照しているブログ一覧: [C++][GameDev] エラー用トレース
このブログ記事に対するトラックバックURL: http://blog.1122soft.com/mt4/mt-tb.cgi/66







コメントする