5

いくつかのクラスを含むクラス ライブラリ プロジェクトで DLL を作成しました。このDLL を別のプロジェクトの参照として追加してデバッグしているときに、段階的に進むとき、またはクラスが例外を返すときに、クラスからのコードが表示されます。

どうすればこれを隠すことができますか? 内部ではなく、クラス命令に例外を表示して、コード全体を表示できるようにしたい。そして、ステップごとにデバッグするときは、メソッドのコード内にステップインせずにメソッドを実行したいと考えています。

str.Split()たとえば、ステップスルーする場合と同じように。コードとすべての手順は表示されません。その行にエラーが表示されるか、次の行にジャンプします。

例えば:

Dim myObj As New myClass.SomeObj()

myObj.MyMethod()

内部のコードを表示したくありませんMyMethod

4

2 に答える 2

4

DebuggerStepThroughステップインを防止する属性を指定されたメソッドに追加します。例外が発生した場合、デバッガーはメソッド内ではなく、メソッド呼び出しで中断します。MSDN を参照

于 2013-07-05T08:16:59.130 に答える
2

あなたが説明する動作は便利です。これにより、呼び出し元は、使用しようとしているコードの詳細を確認することで、何が問題なのかを正確に把握できます。Microsoft は .NET Framework source に対してもこれをサポートしており、私の意見ではかなり便利です。なぜ無効にしたいのかよくわかりません。必要な場合に備えて DLL のコードを利用できるように、デバッグ時に (ステップ イン)F10の代わりに (ステップ オーバー) をいつでも使用できます。F11

ただし、DLL からどのコードにもステップ インできないことが確実な場合は、クライアント アプリケーションでデバッグ シンボルを使用できないようにする必要があります。Visual Studio は、これらのシンボルをPDB ファイルの形式で生成します。このファイルには、ソース ファイルの場所と、生成されたコードとソース行の間のマッピングが含まれています。

他のいくつかの回答とは対照的に、デバッグシンボルの生成は、コードが最適化されているかどうかとは関係ありません (たとえば、「リリース」ビルド)。これについては、最適化されたビルドになぜシンボルが必要なのかという文脈で以前に書いたことがありますが、要点は、これらが 2 つの直交する設定であるということです。最適化をオンにしてシンボル生成をオフにすることも、その逆も可能です。すべてのビルドでデバッグ シンボルを生成することを強くお勧めします。

プロジェクトのプロパティでデバッグ シンボルの生成を無効にするか ([詳細...] ボタンの下に隠されています)、または PDB ファイルを移動して、デバッグ時にクライアント アプリケーションがそれらを見つけられないようにすることができます。既定では、ビルドはそれらをバイナリ出力と同じディレクトリに配置するため、DLL への参照を追加すると、Visual Studio はそれらを簡単に見つけることができます。シンボルまたはバイナリのいずれかを移動すると、それらを見つけることができなくなります。(デバッガーはシンボル パスも検索しますが、シンボルがそこに到達しない可能性があります。)

于 2013-07-05T08:24:19.823 に答える