英語版
このページの英語版を見る

WindowsでD言語をデバッグする

Dリファレンス・コンパイラのDMDとLLVMベースのLDCコンパイラはどちらも、ほとんどのWindowsデバッガで使用できるシンボリックなデバッグ情報を出力することができる。 デバッグ情報を出力することができる。ただし リンカは、実行ファイルのデバッグ情報を含むPDBファイル ファイルを生成する。

シンボリック・デバッグ用にプログラムを準備するには、次のようにコンパイルする。 を-gf :

dmd -gf -m64 myprogram.d

プログラムのデバッグをどのように開始するかは、使用するデバッガによって異なる。例えば、Visual Studioでのデバッグは、"Developer Command Prompt for VS"を開き、次のように実行する。 でのデバッグは、"Developer Command Prompt for VS"を開いて実行することで呼び出せる:

devenv myprogram.exe

デバッギーに引数を渡したい場合は、/debugexeスイッチを使わなければならない:

devenv /debugexe myprogram.exe args...

args... はmyprogram.exeのコマンドライン引数である。

デバッガが立ち上がったら、myprogram.dをロードし、main() 関数の先頭にブレークポイントを設定する。 プログラムを実行すると、main() のブレークポイントで停止する。 デバッガは、プログラムをステップ実行し、ローカル変数とウォッチ式を表示する。

VisualStudioの拡張機能としてVisual Dがインストールされている場合、デバッガーはD式を理解する。 を理解し、動的配列や連想配列のようなD特有の言語構造を検査できる。 この"関数"は、他のデバッガでもサポートされていれば利用できるかもしれない。 mago-miによってサポートされていれば、他のデバッガでもこの機能を利用できるかもしれない。

これらの拡張機能を持たないデバッガは、コードをC/C++として解釈する。ほとんどのデバッグ情報は、Cのデータ構造に自然にマッピングされる。 しかし、それぞれの構文を使わなければならない。例えば、ウォッチ式でクラス・メンバーを表示するには、. の代わりに-> を使わなければならない。 の代わりに を使用しなければならない。

アーキテクチャを指定せずに(つまりデフォルトの-m32を使用して)dmdでプログラムをコンパイルする場合、実行可能ファイルを生成するためにデジタル・マーズ・リンカーのoptlink.exeが使用される。 デジタル・マースのリンカoptlink.exeが実行ファイルを生成するために使用される。使用されるデバッグ情報フォーマットは CodeViewの古いバージョンで、最近のデバッガでは部分的にしかサポートされていない。使用できるのは cv2pdb を使ってデバッグ情報をユビキタスなPDBフォーマットに変換することができる。