2

独自のプログラムでクラス ライブラリ プラグインとして使用される Visual Studio 2012 で DLL ファイルを作成しています。

プログラムは起動時にプラグイン DLL をロードし、独自のプログラムでビジュアル スタジオのような方法でアクセスできます。

しかし、何らかの理由でプラグインのメソッドが失敗した場合、常にスタック トレースを取得できるとは限らず、ソース ファイルをシングル ステップで処理できません。

PDB ファイルを同じディレクトリに配置しましたが、環境のエラー処理が引き継ぐと思われるため、プラグインが失敗した場所ではなく、独自のプログラムが失敗した場所を示すエラーが発生します。

DLL は専用プログラムで作成されたインスタンスに依存しているため、テスト スタブを作成できません。

効率的な方法で、1 行おきにメッセージ/ログ ステートメントを配置せずに DLL をデバッグするにはどうすればよいですか?

4

2 に答える 2

2

実はそうです、それは本当に簡単です!AppDomain.FirstChanceExceptionのイベントを追加するだけです。try-catch ブロック内にある場合でも、スローされた実行はすべて、このイベントに渡されます。

public class MyPlugin : IPlugin
{
    static MyPlugin()
    {
        AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
    }

    static void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
    {
        MyErrorLogger.WriteLine("FirstChanceException event raised in {0}: {1}",
            AppDomain.CurrentDomain.FriendlyName, e.Exception.Message);
    }
}
于 2013-07-23T06:34:00.237 に答える
1

関連する .pdb ファイルを .dll の隣に配置してみてください。これにより、その情報が利用可能になります。

于 2013-07-23T05:36:06.600 に答える