• Sign in
 

ひにけにGD

Twitter @HigenekoTech

  • Blog Home
  • Email Blog Author
  • About
  • Share this
  • RSS for comments
  • RSS for posts
  • Atom
Blog - Link List
XNA開発メンバのブログ
  • XNAチーム

  • Shawn Hargreaves

  • Michael Klucher

  • Mitch Walker

  • Julien Ellie

  • David Weller

  • Eli Tayrien

  • Brandon Bloom

  • Stephen Strychak

  • Dean Johnson

  • Ashu Tatake

XNA関連のサイト
  • XNA Creators Club Online

  • Dream-Build-Play

  • PowerShell
  • Windows
  • Windows Phone
  • XACT
  • Xbox360
  • XNA
  • XNA 2.0
  • XNA 3.0
  • XNA 3.1
  • XNA 4.0
  • XNA Game Studio
  • XNA フレームワーク
  • Zune
  • インディーズゲーム
  • オーディオ
  • グラフィクス
  • ゲーム素材製作
  • ゲーム開発
  • コンテント・パイプライン
  • シェーダーモデル 3.0
  • デバッグ
  • ネットワーク
  • 紹介
  • 雑談
Archives
  • December 2012 (1)
  • June 2012 (3)
  • May 2012 (1)
  • April 2012 (1)
  • February 2012 (1)
  • January 2012 (1)
  • September 2011 (1)
  • July 2011 (1)
  • May 2011 (1)
  • February 2011 (1)
  • January 2011 (1)
  • December 2010 (4)
  • November 2010 (2)
  • October 2010 (9)
  • September 2010 (10)
  • July 2010 (1)
  • June 2010 (3)
  • May 2010 (21)
  • April 2010 (1)
  • March 2010 (7)
  • November 2009 (1)
  • July 2009 (4)
  • June 2009 (10)
  • May 2009 (7)
  • April 2009 (3)
  • March 2009 (1)
  • January 2009 (1)
  • December 2008 (4)
  • November 2008 (5)
  • October 2008 (6)
  • July 2008 (2)
  • June 2008 (1)
  • May 2008 (3)
  • March 2008 (2)
  • February 2008 (7)
  • January 2008 (7)
  • December 2007 (6)
  • November 2007 (3)
  • October 2007 (1)
  • September 2007 (1)
  • August 2007 (1)
  • May 2007 (3)
  • April 2007 (5)
  • March 2007 (9)
  • February 2007 (3)

Content Pipeline その4 そのデバッグ

MSDN Blogs > ひにけにGD > Content Pipeline その4 そのデバッグ

Content Pipeline その4 そのデバッグ

Yuichi Ito - MSFT
8 May 2007 12:10 AM
  • Comments 1

コンテント・パイプラインのデバッグ

前回は、実際のコードを見ながらコンテント・パイプラインのカスタマイズの方法を紹介しました。前回のように、ロジック自体が簡単な場合は良いのですが、もう少し複雑なプログラムをコーディングしている時に必要になるのが、インポーターやプロセッサのコードをデバッグすることです。

ここで問題なのは、ゲーム本体をデバッグする感覚でブレークポイントをコンテント・パイプラインのコード部分に設定してビルドしたとしても、何事も無かったかのようにビルトが終了してしまうということです。コンテント・ビルドは普通にアプリケーションを走らせるのと違い、GSEが水面下でMSBuildを実行しているので、GSE上で走らせるアプリケーション用のブレークポイントを設定しても意味がないからです。

 

コンテント・パイプライン用に書いたコードをデバッグする方法としては、JIT(Just-In-Time)デバッガをつかう方法とCLRデバッガをアタッチする二種類の方法があります。

 

JITデバッガを使う

Visual Studio 2005をインストールしているか、.Net Framework 2.0 SDK(無償)をインストールしたときに使えるようになるCLRデバッガがあるWindows XP環境なら、コード部分に

    System.Diagnostics.Debugger.Launch();

と、書くことで、ビルド実行時に以下のようなJITデバッガ選択ダイアログが開きます。

このダイアログから、CLRデバッガ、またはVisual Studio 2005をデバッガとして起動することで、コンテント・パイプライン用コードのデバッグができます。

 

CLRデバッガをアタッチして使う

残念ながら、現状では、前述のJITデバッガ機能はWindows Vista上では動作しません。そこでWindows Vista上でコンテント・パイプラインをデバッグするにはCLRデバッガ(Visual Studio 2005でも可)をVisual Studio C# Expressにアタッチしてデバッグする方法を紹介します。CLRデバッガは、.Net Framework 2.0 SDK(無償)をインストールすることで使えます。

まずは、以下のコードのように、デバッガがアタッチしている時にのみ中断するようにします。

    if (System.Diagnostics.Debugger.IsAttached)
        System.Diagnostics.Debugger.Break();

 

次にVisual Studio C# Expressを実行した状態で、CLRデバッガ(スタートメニューから、Microsoft .Net Framework SDK v2.0/Tools/Microsoft CLR Debuggerを選択)を別に実行し、CLRデバッガ上で「Tools/プロセスにアタッチ」を選択すると以下のようなダイアログボックスが開きます。

この選択可能なプロセスのリストの中から、VCSExpress.exeを選択してから、アタッチボタンを押します。これで、CLRデバッガがVisual Studio C# Expressをデバッグしている状態になります。

この状態で、Visual Studio C# Express上でビルドを実行すると、先に書いたコード部分で実行が中断し、後はCLRデバッガ上でVisual Stuidio C# Express上と同じようにデバッグができます。実行中断したときに逆アセンブルが表示されいる場合がありますが、逆アセンブルウィンドウ上から右クリックして「ソースコードへ移動」を選択することで、C#のソースコードが表示されます。

また、デバッグした後にCLRデバッガ上で続行を選択すると、ビルド作業が続行されるので、一度アタッチしてしまえば何度でも簡単にデバッグすることができます。但し、インクリメンタルビルドが働いているので、単にビルドを複数回実行すると二回目以降は実際にビルド作業が入らないのでデバッグすることができません。コンテントの量が少ない場合はリビルドし、コンテントの量が多い場合はデバッグしたいコンテントファイルを更新してからビルドするのが効率的です。

 

まとめ

今までは、私もJITデバッガを使っていたのですが、この方法だと常にデバッガを起動しようとするので、急いでいるときにコンテント・パイプラインのデバッグを終えてコードを戻すのを忘れて、他人にコードを渡してしまうなんてことも考えられます。それに対して、CLRデバッガをアタッチする手間はあるものの、逆に言えばデバッガをアタッチしない限りは、普通に動作するのでJITデバッガを使うときの問題は起きませんし、特定の例外が発生したときに中断するようにCLRデバッガ上から設定(Debug/例外メニューを使う)できるという利点があります。欠点を強いていうなら、中断するコードを大量に残したままに…なんてことがあるくらいでしょうか?

以上をまとめると、

  • Windows Vista上で開発してる場合はCLRデバッガ(Visual Studio 2005でも可)をアタッチして使う
  • Windows XP上で開発している場合は好みによって使い分ける

と、いった感じになります。

プログラムが思い通りに動かない時にデバッガを使うことで、問題点を直ぐに見つけることができることが多いので、カスタムインポーターや、カスタムプロセッサが期待通りに動かない時には、今回の方法でデバッグして効率的に問題を解決しましょう。

  • 1 Comments
XNA, XNA フレームワーク, コンテント・パイプライン
Leave a Comment
  • Please add 1 and 7 and type the answer here:
  • Post
Comments
  • ひにけにXNA
    20 Dec 2007 8:32 PM

    コンテントプロジェクト XNA 2.0のプロジェクジェクトをソリューションエクスプローラで見ると以下のようになっています。 参照設定の項目が二つあることに気づいたでしょうか?これは Content がWindowsGame1のサブプロジェクトになっているからです。XNA

Page 1 of 1 (1 items)
  • © 2013 Microsoft Corporation.
  • Terms of Use
  • Trademarks
  • Privacy & Cookies
  • Report Abuse
  • 5.6.426.415