[ILM Debugging] Extension ソリューションをデバッグするにはどうするの?(Visual Studio)

みなさんごきげんよう。ういこです。お久しぶりです。

諸事情により日曜と月曜激しく病んでしまったり、子供が小学校にうっかり上がってしまったりでなかなか時間がとれませんでした。ゴメンナサイ。

さて先日入学式だったのですが、交通安全を子どもたちに啓蒙すべくあの警察の対子供最終兵器「ピーポ君」 が学校にきていました。ぴーぽ君の中の人は女の子? ってうっかり口に出したら、旦那に激しく「中の人などいない!! 」と言われ、あせった私は思わず「あれはぴーぽ君の内臓さ!! 」と言ってみましたところ、子供が「でもあれ、首もげるんでしょ」とか食いついてきたのをいいことに「やだなぁ、首もげたらピーポくん死んじゃうよ!!血が出るよ!!」とヘンなオーバーアクションでアピールし、子供の夢を無事保守することができました。よかったよかった。大人の心無い一言には気をつけたいものです。

さて今日のお題はこんな感じ

【お題】

Get back!! ILM (MIIS) のエクステンションのデバッグってどーすんの?

いやあ、私初めてずっぱまったのが、MIIS のエクステンションコードをデバッグ実行したいと思った時だったんですよ。これから導入をされる方、実は今までバイオハザードでナイフオンリークリアを目指すように激しく机上デバッグされていた方、そして ILM マスターだと自任されているかたも、原点に戻ってみようではないですか。さあ楽しいむしとりたいかいのはじまりです!

【Visual Studio 2005 でデバッグしてみる】

エクステンションのソリューション ファイルを開きます。(拡張子 *.sln)

2. Visual Studio が開きますので、ビルドが "Release" の場合は、"Debug" に変更してください。(※1)

Release から Debug に構成を変えた直後の場合は、ビルドを行ってください。その後、確認したい関数にブレーク ポイントを設定します。

3. ツール メニューから [デバッグ(D)] - [プロセスにアタッチ(P)...] を選択します。

4. "プロセスにアタッチ" ダイアログが表示されますので、以下のチェックを ON にします。

 - "すべてのユーザーからのプロセスを表示する(U)"

 - "すべてのセッションのプロセスを表示する(N)"

5. "選択可能なプロセス(V)" より、MIIServer.exe を選択します。

 

6. [アタッチ(A)] ボタンを押します。

7. Identity Manager でアクション実行します。

8. 目的の箇所でブレークしたら、随時ステップ実行していきます。ちなみにこれでブレークしないとすると、たぶんそこの関数を通ってない (もしくはその処理だとその関数に止まる条件を満たさない) に 500 ペリカです。

9. 問題が確認でき、コードを変更する必要が生じた場合は、メインメニューの [デバッグ(D)] - [すべてデタッチ(D)] もしくは、 [デバッグの停止 Shift+F5] を選択し、デバッグが終了したらコードを変更します。

10. その後は上記手順 3. からの手順を繰り返します。なお、MA のプロパティを変更した場合などは、特にデタッチ - アタッチは必要ありません。デタッチ、アタッチが必要となるのは、エクステンションのコードを変更した場合です

(※1) Visual Studio の "構成マネージャ" を開いていただき、"アクティブ ソリューション構成(C):" を "Debug" にしていただくことでも設定可能です。

Visual Basic のプロジェクトの規定の構成では、構成マネージャが開かない場合があります。

この場合は下記の方法でご対処ください。

1. メインメニューの [ツール] - [オプション] を選択

2. [オプション] ダイアログが表示されるので、左ペインの "プロジェクトおよびソリューション" を展開し、"全般" をクリック

3. 以下のチェック ボックスを ON にする (★)

 

 "ビルド構成の詳細を表示"

 "常にソリューションを表示"

4. ソリューション エクスプローラ上にソリューションが表示されるので(最上位)、ソリューションを右クリックし、 [構成マネージャ(O)...] を選択する

(★) 可能であれば、"ビルド開始時に出力ウインドウを表示" と、"ファイル名の変更時にシンボルの名前変更を確認" にもチェックをつけておくとビルド時の問題の特定や、アセンブリと関数名をデバッガ上で紐づける "シンボル ファイル" の不整合を防ぐことができるので、よいかと思います。

(※2) Identity Manager から自動生成されるエクステンションのソリューションは、

規定では "Release" ビルドの構成の場合、デバッグ シンボルを生成しません。

デバッグ シンボルを作りたいときは、Debug ビルドにするのが一番手間がかからない方法です。もしくは、ソリューションエクスプローラ上でプロジェクトを右クリックし、プロパティを設定するところの [詳細コンパイルオプション(A)..] を押すとでてくる [ビルドの詳細設定] ダイアログの “デバッグ情報を作成(G):” が規定だと None ですが、これを Full などにしてもらうとデバッグ シンボル (*.pdb) ができます。

プロジェクトのプロパティ↓

詳細 コンパイルオプションはこちら↓

Debug Symbol はこんな感じで生成されます。(ビルド後)

~ ういこう@本当はぴーぽ君と手をつないで写真撮りたかった~