早速脱線してデバッグ用コンソールを表示してみた
ええと、今日はバグをやっつけるという記事を
寝る前に書いたはずなんだが、早速、脱線して
デバッグ用コンソールを表示するデバッグ機能を作ってみた。
DXライブラリにはprintfDxというデバッグ用の関数がある。
これは、一通りの画面描画処理の後に
描画処理が実行されるので、最前面に情報が表示される便利な関数だ。
使用例
が、一通りの画面描画処理の後に描画されるため
出力場所によっては、文字が見づらいという難点がある。
AppLogAdd関数を使ってLog.txtに出力するって手もあるが
これだとテキストエディタをアクティブにしないと
ログファイルの再読み込みをしないので、使い勝手が悪い。
まぁ、VisualStudioの「出力ウィンドウ」を表示しておけば良い
という話もあるんだけどね。
そこでデバッグ用の機能として
デバッグ用コンソール画面を使う機能を実装してみた。
新しく作った関数は、以下の3つ
//*******************************************************
// デバッグ用のコンソールの初期処理(メインループ前に呼ぶ)
//*******************************************************
void initDebugConsole(){
// デバッグ用コンソール画面表示フラグが表示しない設定の場合、処理終了
if(debugInfo.debugConsoleDisplayFlg == FALSE){
return;
}
//デバッグ用にコンソールを呼び出す
AllocConsole();
freopen("CONOUT$", "w", stdout);
freopen("CONIN$", "r", stdin);
// デバッグコンソールがアクティブウィンドウになるので
// ゲーム本体のウィンドウをアクティブにする
SetForegroundWindow(GetMainWindowHandle());
}
//*******************************************************
// デバッグ用のコンソールのクリア処理
//*******************************************************
void clearDebugConsole(){
// デバッグ用コンソール画面表示フラグが表示しない設定の場合、処理終了
if(debugInfo.debugConsoleDisplayFlg == FALSE){
return;
}
system("cls");
}
//*******************************************************
// デバッグ用のコンソールの終了処理(メインループ後に呼ぶ)
//*******************************************************
void endDebugConsole(){
// デバッグ用コンソール画面表示フラグが表示しない設定の場合、処理終了
if(debugInfo.debugConsoleDisplayFlg == FALSE){
return;
}
//コンソール解放
FreeConsole();
}
<処理の流れ>
1.DXライブラリのメインループの前の処理
debugInfo.debugConsoleDisplayFlgにTRUEかFALSEを設定することで
デバッグ用コンソールの表示有無を設定し、
initDebugConsole();
debugInfo.debugConsoleDisplayFlgがTRUEの場合、
デバッグ用コンソールウィンドウが表示される。
※debugInfo構造体は、かげさんが初音ミク冒険記の開発に使っている
デバッグ情報を格納する構造体。
debugInfo.debugConsoleDisplayFlg自体はintの変数で
デバッグ用情報ファイルが存在しない場合、FALSEで初期化される。
デバッグ用情報ファイルが存在する場合は、ファイルの値が設定される
という仕組みにしている。
2.メインループでの処理
通常通りprintfを使う。(printfDxではない)
これでデバッグ用コンソールウィンドウにprintfで出力した内容が表示される。
必要に応じてclearDebugConsole();で
デバッグ用コンソールウィンドウをクリアする
3.メインループを抜けた後の処理
endDebugConsole();
を呼び出すだけ。
するとこんなことができる。
ね、簡単でしょ。
| 【固定リンク】 | 【コメント (0)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: 早速脱線してデバッグ用コンソールを表示してみた:
コメント
このブログの新着コメントをRSSリーダに登録する為のxml