- PR -

[C#] デバッグ方法についての質問です。

投稿者投稿内容
Yuki
会議室デビュー日: 2005/08/30
投稿数: 5
投稿日時: 2005-08-30 11:04
いつもお世話になっております。
下らない質問かもしれませんが
わかるかたいらっしゃいましたらご教授願います。

同一ソリューション内にEXEプロジェクトが2個あり、
当然、コンパイルすれば2個のEXEができます。
片方のEXE(A)から、InvokeMemberメソッドを利用して、
インスタンスを作成し、もう片方のEXE(B)を起動します。
これはOKなのですが、(B)をデバッグしたい場合は
どうすればできるのでしょうか?

すみません、初心者なのでアドバイスを頂けると助かります。
いろいろGoogleでも検索しましたがよくわかりませんでした。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2005-08-30 11:34
デバッグ-プロセス-アタッチで
EXE(B)をアタッチしてもできないでしょうか?
Yuki
会議室デビュー日: 2005/08/30
投稿数: 5
投稿日時: 2005-08-30 11:37
burton999様

さっそくご回答ありがとうございました!
やってみます。
また、結果をご報告致します。

質問に言葉が足りなかったかもしれません。
EXE(B)のソースコード内にブレイクポイントをはって
止めることも可能でしょうか?
すみません>< 何度も。。。

[ メッセージ編集済み 編集者: Yuki 編集日時 2005-08-30 11:39 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-08-30 11:43
引用:

Yukiさんの書き込み (2005-08-30 11:04) より:
同一ソリューション内にEXEプロジェクトが2個あり、
当然、コンパイルすれば2個のEXEができます。
片方のEXE(A)から、InvokeMemberメソッドを利用して、
インスタンスを作成し、もう片方のEXE(B)を起動します。
これはOKなのですが、(B)をデバッグしたい場合は
どうすればできるのでしょうか?


ちょっと疑問なんですが、これはEXE(B)をプロセスとして起動しているのではないということでしょうか?
EXE(B)の何をインスタンス化して何を実行しているんでしょうか?

InvokeMemberとかリフレクションを使っているのは、VS.NET上ではEXEを参照設定できないための苦肉の策といったところでしょうか?

EXEとして起動する必要がないのであれば普通DLLにすると思うんですが、まあ何らかの理由でEXEにしないといけないんですよね、きっと…

プロセスとして起動していない状態であれば、普通にVS.NET上でそのままデバッグ続行できるような気がするんですが、詳細が分からないのでなんともいえないです。
Yuki
会議室デビュー日: 2005/08/30
投稿数: 5
投稿日時: 2005-08-30 11:54
なちゃ様

すみません。いろいろと。
質問と状況も何だかちんぷんかんぷんですか^^;

>プロセスとして起動していない状態であれば、普通にVS.NET上でそのままデバッグ続行>できるような気がするんですが、詳細が分からないのでなんともいえないです。
▲私の認識不足ならすみません。
 EXE(A)が各プログラムを起動するメニューになっています。
 EXE(B)はメニューから起動されるプログラムです。
 今、同一ソリューション内にEXE(A)とEXE(B)のプロジェクトがありまして、
 テスト中は、EXE(A)をスタートアッププロジェクトにしています。
 このとき、当然EXE(B)は起動していないです(?)
 EXE(A)のEXE(B)起動ボタンを押して、EXE(B)を起動するときに、
 EXE(A)からさまざまな情報をEXE(B)のプロパティにセットして、
 起動します(したいのです)。
 アセンブリクラスのメソッドでEXE(B)のパスを指定しているので、
 コンパイルされたEXE(B)が当然実行されていると思いますが、
 こうなると、EXE(B)のソース内でどう動いているのかがわからないのです。
 自分でも正しいことを言っているのかわからなくなりました。
 たぶん、こういう風に実行されているのだと思います。
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2005-08-30 13:26
引用:

Yukiさんの書き込み (2005-08-30 11:54) より:
 アセンブリクラスのメソッドでEXE(B)のパスを指定しているので、



パスってのはネームスペースのことですかね。
別プロセスとして起動しているのではないようですから、普通にアセンブリの参照(プロジェクト参照)したほうが良いと思います。

参考:
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=23780&forum=7
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-30 13:34
私なら、EXE2 を別ソリューションにして、単体でテストしちゃうかなぁ。
で、これまた別のソリューションで統合して分けてしまうかなぁ。
いや、そもそも DLL にしちゃうかもしれません。

EXE1 から起動されるだけなら、EXE2 って単体レベルのテストしかしませんね。



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2005-08-30 14:08
引用:

 EXE(A)のEXE(B)起動ボタンを押して、EXE(B)を起動するときに、
 EXE(A)からさまざまな情報をEXE(B)のプロパティにセットして、
 起動します(したいのです)。
 アセンブリクラスのメソッドでEXE(B)のパスを指定しているので、


とりあえず、ここをどうやっているのか具体的に教えてください。
具体的にというのは、どのようなクラスやメソッドを使用して、
どのようなコードでEXE(B)を起動しているかを「正確に」、です。
アセンブリクラス(Assembly?)にはInvokeMemberはないはずですし…

スキルアップ/キャリアアップ(JOB@IT)