2012-03-27 28 views
17

ここで理解しているように、リモートデバッガを使用する唯一の方法は、ターゲットアプリケーションを起動し、ビジュアルスタジオを介して接続することです。プログラムの最初からブレークポイントをすべて取得する方法はありますか?私のプログラムにはデバッグが必要なコードがあり、実行中のコードをキャプチャするのに十分速くデバッガをアタッチすることはできません。アプリケーション起動時のVisual Studioリモートデバッグ

+0

@HaraldDutchは素晴らしいソリューションをここに記述しています:http://stackoverflow.com/questions/19512041/remote-debugging-how-to-start-the-debugging-process-on-a-different-computer – eFloh

答えて

13

あなたのアプリの出発点でこのコード行を注入しようと、コードを変更することができた場合:この行がヒットした場合

System.Diagnostics.Debugger.Launch(); 

それは効果的にあなたを待って、デバッガをアタッチするように求められます返事する。リモートデバッガを使用しているので、その時点でアタッチしてダイアログをキャンセルするだけで済みます。お役に立てれば。

+0

ありがとう! – Tim

+1

'System.Diagnostics.Debugger.Launch();'ではないでしょうか?これはargsのないメソッド呼び出しであり、最後にはステートメントのようにセミコロンが必要です。 –

3

Visual Studio Pro 2010で.NET 4アプリケーションを構築すると、これはうまくいきません。

どうやらこれは既知のバグです:

https://connect.microsoft.com/VisualStudio/feedback/details/611486/debugger-launch-is-now-crashing-my-net-application-after-upgrading-to-net-4-0

A私のために働いている瞬間のための(ややハック)回避策は、単にアプリは(メッセージボックスを投げることです)右の開始時メインウィンドウの初期化の:

public partial class MainWindow : Form 
{ 
    public MainWindow() 
    { 
     // To allow you time to attach a remote debugger ... 
     MessageBox.Show("Please attach debugger"); 

     InitializeComponent(); 
     ... 

今すぐあなたのレジャーでVSリモートデバッガを接続し、メッセージボックスで[OK]を打つことができます。

醜いが機能的である。

7

ソリューション

System.Diagnostics.Debugger.Launch 

はどちらか私のために動作しませんでした。しかし、私は次のように起動する私のアプリケーションへの書き込み私の問題を解決するために管理:

while (!System.Diagnostics.Debugger.IsAttached) 
    System.Threading.Thread.Sleep(100); 

デバッガがアタッチされるまでアプリケーションをお待ちしておりますこの方法。

+0

実際に素晴らしい解決策です。 '' #ifdef DEBUG'''と '' 'endif'''でパックされています。リリースビルドを妨げず、自分のマシンでデバッグするときに完璧に動作します。しかし、リモートでデバッグする必要があるときは、単に待機します。ありがとう! – ecth

関連する問題