DirectX アプリケーションのデバッグ
DirectX アプリケーションのデバッグ
ここでは、C および C++ アプリケーションのデバッグについて説明する。説明するトピックは、次のとおりである。
- デバッグ用とリテール用の DLL
- デバッグ DLL の追加と削除
- その他のリソース
デバッグ用とリテール用の DLL
Microsoft® DirectX® ソフトウェア開発キット (SDK) インストール プログラムには、DirectX ダイナミックリンク ライブラリ (DLL) のデバッグ ビルドまたはリテール ビルドのいずれかをインストールするオプションがある。
C++ でソフトウェアを開発している場合は、DLL のデバッグ バージョンをインストールするとよい。このオプションでは、デバッグおよびリテールの DLL がシステムにインストールされる。リテール バージョンでは、リテール DLL のみがインストールされる。DLL のデバッグ バージョンには内部データ構造を検証する追加コードがあり、プログラムの実行中に (OutputDebugString 関数を使って) デバッグのエラー メッセージを出力する。エラーが発生すると、問題の詳細がデバッグ出力される。DLL のデバッグ バージョンはリテール バージョンよりも動作が遅いが、アプリケーションのデバッグにはリテール バージョンよりも役立つ。アプリケーションを出荷する場合は、リテール バージョンを出荷すること。
SDK のデバッグ バージョンがインストールされている場合、DirectX コントロール パネル ユーティリティを使って、ほとんどのコンポーネントのデバッグ ビルドとリテール ビルドを切り替えられる。この機能を有効にするには、SDK をインストールするときに [デバッグ] オプションを選択する。
デバッグ メッセージを確認するには、ウィンドウ内やリモート コンピュータにデバッグ出力が表示されるよう、システムの構成を設定する。Microsoft Visual Studio® .NET などの開発環境では、この設定が可能である。設定方法については、開発環境についてのドキュメントを参照すること。
デバッグ用のビルドを使う場合は、デバッガが関連するシンボリック情報を確実に見つけられるようにするために、以下に示す場所にシンボル ファイルを置いておかなければならない。
オペレーティング システム | デバッガ | .pdb ファイルの場所 | .dbg ファイルの場所 |
---|---|---|---|
Microsoft Windows® 98 | Microsoft Visual C++® | バイナリと同じディレクトリ | バイナリと同じディレクトリ |
Windows 2000 | Visual Studio .NET | バイナリと同じディレクトリ | %SystemRoot%\Symbols\<binary extension>\ |
Microsoft Windows NT®、Windows 2000 | Visual C++ | バイナリと同じディレクトリ | %SystemRoot%\Symbols\<binary extension>\ |
Windows NT、Windows 2000 | NTSD/KD | %SystemRoot%\Symbols\<binary extension>\ | %SystemRoot%\Symbols\<binary extension>\ |
Windows XP | Visual Studio .NET | バイナリと同じディレクトリ | %SystemRoot%\Symbols\<binary extension>\ |
注 Windows NT または Windows 2000 で Visual C++ 開発システムを使ってデバッグを実行する場合は、Splitsym 開発ツールは使わないこと。Splitsym は、プライベート シンボリック情報を <binary>.dbg ファイルからバイナリ エクステンションのシンボル ディレクトリ (%SystemRoot%\Symbols\Dll\ など) にコピーし、バイナリ ディレクトリから元のファイルを削除してしまう。Visual C++ を使うには、プライベート シンボリック情報のファイル (<binary>.dbg) がバイナリ ファイルと同じディレクトリに置かれている必要がある。したがって、デバッグ用のビルドを使う場合は、プライベート シンボリック情報のコピーだけを行い、削除を行ってはならない。これが問題となるのは、Windows NT または Windows 2000 で Visual C++ を使う場合だけである。その他のデバッグ情報については、Visual C++ のドキュメントおよび Windows 2000 Driver Development Kit (DDK) のドキュメントを参照すること。
デバッグ DLL の追加と削除
リテール ランタイムをインストールしていてデバッグ ランタイムに変更したい場合は、(DXSDK)\SDKDev\WindowsXP フォルダにある Dxpsetup.exe を実行する。
デバッグ ランタイムをインストールしていてリテール ランタイムに戻したい場合は、Windows System フォルダにある Undxxpdebug.exe を実行する。この操作は、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックして、ダイアログ ボックスに「undxxpdebug」と入力しても実行できる。
注 Windows 98、Windows Millennium Edition (Windows Me)、または Windows 2000 を使っている場合、ランタイムのデバッグ バージョンを削除するには、DirectX SDK をアンインストールする必要がある。
その他のリソース
C++ メモリの破損を発見するには、Compuware 社の BoundsChecker などのメモリ破損/リーク ツールの使用を検討するとよい。
Microsoft では、MSDN® で "knowledge base (ナレッジ ベース)" の記事データベースを公開している。記事を参照するには、www.microsoft.com/japan/msdn/ (日本語) に接続するか、msdn.microsoft.com (英語) に接続し、目的のトピックを検索する。
AppVerifier ツールは、ヒープの破損、ロックの使用、無効なハンドル、スレッド スタック サイズのチェックなどについてアプリケーションを監視する。このツールを見つけるには、MSDN Library で「Testing Applications with AppVerifier」と検索する。