アプリケーションのリリース バージョンがあります (インストールして実行するには、いくつかのバッチ ファイルが必要です)。ソースコードのコピーを持っています。(プログラムを理解するために)すべてのイベントのパスを確認するために、現在私が行っていることは、アプリケーションをインストールすると同時にソースコードを構築し、すべてのdllとpdbをコピーすることです(デバッガーができるようにコードにマップ) デバッグ フォルダーからプログラム ファイルに移動し、アプリを実行します。ソース コードに diagnostics.debugger.launch を配置したので、バージョンをデバッグできました。これを行っているのは、bin\debug からプロジェクトを直接実行してテストできないためです。プロジェクトにはいくつかの依存関係 (バッチ ファイルのパラメーター) があるため、リリースされたバージョンをインストールしています。コード内のすべてのイベント パスを見つける必要があります (この会社と .NET は初めてなので)。
1 に答える
0
SOへようこそ!より多くの情報が役立ちます。プログラムは何をしているのか、どのような問題を解決しようとしているのかなど...
実行パスを追跡する限り、必要なことを行う方法はたくさんあります。いくつかの提案:
- 起動入力をログに記録し、同じ入力を使用して開発環境でプログラムをデバッグします。他の外部依存関係によっては機能しない場合があります。
- すべてのメソッドへのエントリをファイルに記録します。これにより、実行パスが表示されます。これは昔ながらの方法を実装するのは非常に厄介ですが、PostSharp の無料バージョンの OnMethodBoundaryAspect のようなものを使用して、一度ログ記録コードを記述し、特定のメソッドで必要に応じて再利用することができます。
- Gibraltarのようなインストルメンテーション プラットフォームを使用して、何が起こっているかをある程度可視化します。
- Trace Listener を使用して、イベントの実行を追跡します。Trace.Listeners.Add() を見てください。リスナーを作成したら、Trace.Write または Trace.WriteLine を呼び出して、トレースに情報を追加できます。これには、多くの手動でトレース情報をメソッドに入力する必要がありますが、どうしてもやりたい場合は実行できます。私は PostSharp のようなアスペクト指向のソリューションを好みますが、何らかの理由でそのオプションがない場合があります。
簡単なサンプル: (繰り返しますが、このアプローチはお勧めしません...)
using System.Diagnostics;
using System.IO;
namespace TrackingExecutionPath
{
internal class Program
{
private static void Main(string[] args)
{
var myFile = File.Create(@"C:\Application.log");
Trace.Listeners.Add(new TextWriterTraceListener(myFile));
Trace.WriteLine("Starting up");
var tracer = new Tracer();
tracer.TraceMeOnce();
Trace.WriteLine("Wrapping up");
Trace.Flush();
}
}
internal class Tracer
{
public void TraceMeAgain()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeAgain");
Trace.WriteLine("Doing some work.");
Trace.WriteLine("Exiting TraceMeAgain");
Trace.IndentLevel--;
}
public void TraceMeOnce()
{
Trace.IndentLevel++;
Trace.WriteLine("Entering TraceMeOnce");
Trace.WriteLine("Doing some work.");
TraceMeAgain();
Trace.WriteLine("Exiting TraceMeOnce");
Trace.IndentLevel--;
}
}
}
出力例:
起動中
TraceMeOnce に入る
いくつかの作業を行っています。
TraceMeAgain に入り
ます。
TraceMeAgain の
終了 TraceMeOnceの終了
まとめ
于 2013-10-23T22:01:55.573 に答える