0

同じ dll ファイルを使用する 2 つのプログラムを使用しています。最初のプログラムのコードは失われ、2 番目のプログラムは私が書いているものです。問題の dll は、ある種のラッパー dll として使用されます。

ほとんどの場合、2 つのプログラムは一緒に問題なく動作します。ただし、競合が発生してプログラムが停止することもあります。試行錯誤の結果、この dll を呼び出す 2 つのプログラムに関係があることがわかりました (念のため、dll を使用する 3 番目のプログラムもありますが、そのプログラムを無効にしました)。両方のプログラムが dll を使用する方法に関係があるに違いありません。

だから私は疑問に思っていました.dllを監視し、それがどのように呼び出されるかを示すことができるツールはありますか;
どの関数が呼び出されたか; パラメータを表示します。そして、それが void ではなかった場合、返された型と結果は何でしたか。

通常、コードを段階的にトレースするビジュアルスタジオでこれを行います。しかし、最初のプログラム (その dll を含む) のコードが失われたためです。私はそれを追跡できません。何が起こったのかをデバッグしたいと思います。エラー状況がわかっている場合は、新しいプログラムで何かを構築して、これが再び発生しないようにします。

4

2 に答える 2

1

このDLLが.NETの場合は、.NET ReflectorまたはdotPeek(www.jetbrains.com)を使用して逆コンパイルできます。次に、トレースコードを追加して、再度コンパイルできます。PostSharp(http://www.sharpcrafters.com)を使用してトレースコードを追加することもできます。

.NET dllでない場合でも、他のアセンブラーデバッガー(http://www.ollydbg.de )を使用してデバッグできます。

于 2013-02-21T13:14:18.077 に答える
1

ソース コードと、BIN ディレクトリに .pdb ファイルがある場合は、そのコードを使用してデバッグできます。ただし、Visual Studio で外部コードのデバッグを有効にする必要があります。

次に、メニューの [デバッグ] --> [Windows] --> [モジュール] で dll を確認できます。

dll に移動し、シンボル ファイルに問題がないかどうかを確認します。

于 2013-02-21T15:40:39.510 に答える