web-dev-qa-db-ja.com

コードでデバッガーを起動

ワンクリックインストールから起動したアプリケーションをデバッグする必要があります。 (VS 2010、Office 7を備えたExcel VSTO)。ワンクリックインストーラーアプリケーションに提供されるログイン資格情報に基づいて、ユーザーには2つのスプラッシュページのいずれかが表示されます。これはすべて私のマシンで正常に機能しますが、デプロイすると、デフォルトから2番目のスプラッシュページに変更するとエラーが発生します。

私の人生では、VS2010内からプロセスをデバッグする方法がわかりません。資格情報を入力する前にログインにアタッチできますが、[OK]ボタンをクリックするまで起動されないため、Excelにアタッチできません。

だから、Excelを持っている方法はありますか、むしろ、コードがインスタンス化されているときにデバッガを呼び出して、デプロイされたアプリケーションで画像リソースが利用できない理由を理解できますか?

ありがとう。

ランディ

46
EoRaptor013
System.Diagnostics.Debugger.Launch();
101
Juan Ayala

Juanの答えは、Visual Studioがインストールされている場合に最適です。しかし、ターゲットのマシンにそれがない場合は、何らかの種類の一時停止をする必要があります(通常、ダイアログボックスをメインに追加して、接続するのを待つようにします) リモートデバッガー マシンに接続する

3

コードからブレークポイントを強制するには:

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

アプリケーションはVisual Studioから起動できないが、デバッグする必要がある場合があります。 Visual Studioが実行されている場合、このコードを使用してアプリケーション内のフォームをチェックし、Visual Studioに添付する可能性を提供します。

using System.Diagnostics;

....

Process[] procName = Process.GetProcessesByName("devenv"); // check if VS currently running

// If Visual Studio is running halt the application by showing a MessageBox and give opportunity to attach the debugger
if(procName.Length > 0)
    MessageBox.Show("Wait for debugger attach");

// Force a breakpoint when the debugger became attached
if (System.Diagnostics.Debugger.IsAttached)
    System.Diagnostics.Debugger.Break(); // force a breakpoint
2
marsh-wiggle

excelが十分な長さで実行されていればExcelに接続できますが、真剣にエラーがあるとは思えません。

実行中のアプリケーション/プロセスにアタッチでき、シンボルが使用可能であれば(デバッグビルド)、実際にデバッグできますが、アタッチするアプリケーションを選択するには、アプリケーションが十分に長く存続する必要があります。

あなたが言っていることから、あなたが必要とするのは適切な例外とエラーロギング、すべての例外ですべて(スタックトレース、例外の詳細...)を保存するLog4NetやNLogのようなものだと思うので、本当のことを明確に識別するでしょう問題です。

0
Davide Piras