プロが教えるわが家の防犯対策術!

Visual StudioのPro/Teamはリモートデバッグができるとあるのですが、MSDNを見てもリモートデバッグが具体的にどういうものか理解できていません。
デバッグ対象はC++で書いたコードや.net C#で書いたコードです。
2台コンピューターを用意して一方のプログラムをデバッグしながら制御ができるということでいいのでしょうか?
また、Virtual PC上のプログラムにアタッチするというようなことも可能なのでしょうか?
普通のデバッグと操作上や機能上の違いはあるのでしょうか?
普段Visual Studioでデバッグする時のようにステップ実行やアセンブラ表示、レジスタの様子、メモリーの様子、変数の様子など見れるのでしょうか?もし可能なら次買う時はProを検討したいのですが。
デバッグしている様子などサイトを探したのですが見つからずイメージができないので、詳しい方いましたら教えていただけると助かります。

A 回答 (1件)

実際に自分ではやったことないですが、自分なりの理解の範囲で…



基本的にはPCを2台、用意して、
片方はデバッグしたいプログラム(debugee = デバッギ)を動かし、
他方はデバッガ = VisualStudio を動かします。

2台のPC間はなんらかの通信(LAN等)で繋ぎます。

何故そんなことをする必要があるか?

1台の PC で GUI やグラフィック等のデバッグをしたことがあるなら分かると思いますが、
たとえば、

  ボタンを連打すると画面表示がくずれる

などのバグを、1台の PC 上で対象プログラムとデバッガ(VisualStudio)を同時に動かしてデバッグすると
バグが発生(画面がくずれる)した瞬間にプログラムがブレークポイントで止まって、
デバッガに制御が移ります。
※表示処理の関数にブレークポイントをセットしておいた場合。

この場合、プログラムは停止しているので、バグが発生している状況(表示がくずれた画面)は
表示処理の前や途中だったりして、まともに表示されない状態になっています。

また、プログラムがブレークポイントで停止してデバッガがアクティブになると、デバッガが最前面に表示されるため、
デバッグ対象のプログラムは背後に隠れます。

この後で、デバッガ画面をよける/縮小しても、対象プログラムは停止していてリドローされないため、
ウィンドウ/ダイアログは真っ白のままで、見たいものが見れない状態になってしまいます。

なので、デバッガが別の PC で動いていれば、
バグが発生した瞬間の画面を見られる!
ステップ実行すれば、問題が発生している状況を逐次、見ることができる!
というわけです。
※これは例ですので、これ以外にもリモートデバッグが有用な状況はあるはずです。


なお、Windows のデバイスドライバの開発とか、
Linux のカーネル/デバイスドライバ開発、
組み込みの開発などは
基本的にリモートデバッグです。


> 2台コンピューターを用意して一方のプログラムをデバッグしながら制御ができるということでいいのでしょうか?
Yes

> また、Virtual PC上のプログラムにアタッチするというようなことも可能なのでしょうか?
詳しくないですが、たぶん No

> 普通のデバッグと操作上や機能上の違いはあるのでしょうか?
違いは無いと思います。


※最初にも書きましたが、自分はやったことはないので、
 詳しい方がいれば説明願います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
とても参考になりました。もうすこし自分で調べてみようとおもいます!

お礼日時:2009/11/19 22:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!