2012-05-06 6 views
2

VS 2010 Ultimateを使用してC#アプリケーションを開発します。 通常、これらのアプリケーションはユーザーの介入なしに長時間実行されますが、通常は内部にバグがあります。Visual Studioの外で動作するデバッグアプリケーション

残念ながら、アプリケーションがランダムにクラッシュし、エラーを再現できないことがよくあります。また、時には私は "アプリケーションが動作しなくなりました"というメッセージだけを持っており、これ以上の情報はありません。

私はVisual Studioをお客様のマシンにインストールできますが、VSを実行してデバッグモードでソースコードをコンパイル/開始することはできません。私が必要とするのは、の後にVS を起動して、アプリケーションを起動してクラッシュさせることです。実際には実行時に例外が発生した場合、Windowsは「VSでデバッグしますか?」と尋ねますが、YESと答えるとVSが起動しますが、単にソースが見えませんコード(それは同様にPC上にある)、私は例外の原因となっているコードの行を検査することはできません。 VSは私に "ソースコードが利用できません"と伝えます。実際には、WindowsがVSをどのように起動するのか想像できず、クラッシュしたアプリケーションのソースコードがどこにあるのか分かりません。

このデバッグシナリオはどのように機能するのですか?あなたがコンパイルされたプログラムを実行中にエラーをキャッチしたい場合

どうもありがとう、 シモーネ

+1

例外の詳細/コールスタックのロギングは、[PDBファイルの使用方法]の可能な複製( – BrokenGlass

+0

)です(http://stackoverflow.com/questions/72104/how-do-i-use-pdb-files) – BrokenGlass

答えて

0

は、あなたがロギングメカニズムのいくつかの並べ替えを使用する必要があります。最近、あなた自身で書く必要はなく、.NETアプリケーション用に設計された素晴らしいオープンソースのログエンジンがあります。NLogと呼ばれています。それはファイル、電子メール、コンソールまたはデータベースにログを保存することができる、ほぼすべてあなたが望むことができる:)。

希望します。

+0

Ernestasありがとう、NLogについて知っていますが、例外がどこで発生するのかわからない場合は、何をログに記録するのか分かりません。もちろん、すべてのソース行にログ行を追加することはできません。さらに、ソフトウェアはマルチスレッドであり、これは連続しているためログ出力を解釈するのが非常に難しくなります。 – user1378544

1

Windbgデバッグツールが目的を解決します。

プロセス状態をダンプし、windbgで解析を開始します。それはあなたの

+0

こんにちはRockstart、あなたの提案のおかげで:ちょうどプロセスをダンプする方法を知らない! – user1378544

+0

WinXPを使用している場合は、ProcessExplorerを使用してダンプを作成します。 win7の場合、タスクマネージャウィンドウのプロセスを右クリックしてダンプを作成できます。ここをクリックしてください[John Robbinsのブログ](http://www.wintellect.com/cs/blogs/jrobbins/archive/2010/06/17/how-to-capture-a-minidump-let-me-count-the -方法。aspx) – Rockstart

1

がすでに実行されているVisual Studioのインスタンスからデバッグする例外情報、そして、「デバッグ」メニュー項目を選択できます「プロセスにアタッチ...」を

Attach to Process

次に、選択します実行可能ファイルをリストから選択し、「Attach」(またはダブルクリック)を押すと、アプリケーションをデバッグします。 「はい」を選択し、Windowsがソースコードを利用できないと言った場合、これはPDBをロードできなかった可能性が高いので、モジュールのシンボルをロードしていることを確認してください"ウィンドウ枠。

+0

例外が発生したときにVisual Studioが起動し、クラッシュしたプロセスに自動的にアタッチされているが、これは正常なので、プロセスに接続できません。とにかく、私はモジュールパネルについて知りませんし、 "ソースが見つかりません"というメッセージの下に「ソースを見つける」と言ったリンクが見つかったので、Landerに感謝します。ソースファイルをクリックして見つけただけです!大いに感謝する!! – user1378544

+0

はい、私はあなたがすぐにデバッガのインスタンスを1つだけ添付することができると信じています。例外がスローされる前にアタッチし、プロセスを中断することを選択した場合は、ブレークポイントなどを追加できます。 – Lander

関連する問題