Magic xpaをデバッグするためにWinDbgを使用する

目的

このテクニカルノートは、WinDbgデバッガーの使用方法について説明しています。Magicエンジンが異常終了した場合、Magic xpaはログファイルを作成します。

概要

Magicエンジンが異常終了した場合、その原因を分析し、理解するためにログファイルが必要になる場合があります。

以前、MutekのBugtrapperと呼ばれているツールが、ダンプファイルを作成するために使用されました。しかし、Windows 2003やWindows XPでは、このツールをサポートしません。WinDbgデバッガーと呼ばれているMicrosoftのツールは、以下のようにしてダンプファイルを作成するために使用されます。

実装手順

WinDbgデバッガーを使用するために、Magic xpaがインストールされているマシンで、以下の手順を実行してください。

  1. Cドライブに"MGDBG"という名前のフォルダを作成してください。

  2. 以下のURLから"Debugging Tools for Windows"をダウンロードしてください。

    http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx


    dbg_x86_6.n.nn.n.exeと呼ばれているファイルをダウンロードします。

  3. ダウンロードファイル"dbg_x86_6.n.nn.n.exe"一時フォルダにコピーします。

  4. ファイルをダブルクリックしてインストールを実行します。

  5. ハードディスクのCドライブに十分な空きスペースがあることを確認してください。インストール処理によって、約100MBほどのファイルが作成されます。

  6. "windbg.in"ファイルを c:\mgdbg フォルダに置きます。
    このファイルは、"Debugging Tools for Windows"の内部設定ファイルです。
    ここ をクリックするとMagic V9Plus用のファイルがダウンロードできます。
    ここ をクリックするとMagic V10/Magic xpa用のファイルがダウンロードできます。
    ファイルを windbg.in にリネームします。

  7. ダンプファイルの作成

  1. コマンドプロンプトで以下のコマンドを入力します。

[Full pathname of windbg.exe executable] -G -g -Q -p [process id] -c "$<c:\mgdbg\windbg.in"


process id(実行エンジンのプロセスID)は、タスクマネージャで確認できます。

  1. デバッガのウインドウが開きます。Magicエンジンが異常終了したら、デバッガのウィンドウから"G"を入力しEnterを押下します。ダンプファイルが(c:\MGDBGフォルダに)作成されます。

 

  1. 1つのMagicエンジンのみを実行する場合は、以下の構文を使用することもできます。

[Full pathname of windbg.exe executable] -G -g -Q -pn  [xpa exe name] -c "$<c:\mgdbg\windbg.in"




Magic xpaのEXE名は、uniRTE.exeになります。

  1. EXE名やプロセスIDを変更することGで、開発環境の異常終了にトラップを設定することもできます。

Global Flags …… ダンプファイルに異常終了の原因を特定するために必要な情報が書き込まれない場合があります。このような条件は、グローバルフラグ(gflags)情報を保持するダンプファイルを作成するよう指定します。

  1. 以下の手順でDebugging Tools for Windowsを設定することで、追加情報を作成することができます。

1. Global Flagsメユーティリティを実行します。: スタート→プログラム→Debugging Tools for Windows→ Global Flags

2. [Image File]という名前の3番目のタブに切り替えます。

3. デバッグしたいEXEの名(uniRTE.exeまたはuniStudio.exe)を入力します。フルパスでなく、ファイル名のみを入力してください。

4. [Enable page heap]をチェックします。


 

重要:

一旦ダンプファイルが作成されたら、グローバルなフラグ定義を削除してください。ユーティリティを再度起動し、[Enable page heap]のチェックをはずします。