43

Visual Studioでメソッドを呼び出し、呼び出しスタックを調べてデバッグを試みます。

その中のいくつかの行は「外部コード」とマークされています。

これは正確にはどういう意味ですか?.dllのメソッドが実行されましたか?

ばかげた質問; しかし、決定的な答えが必要です。

4

6 に答える 6

62

[外部コード]は、そのdllで使用できるデバッグ情報がないことを意味します。

あなたができることは、Call Stackウィンドウ内でマウスの右ボタンをクリックすることです。次に、Show External Codeこれを選択すると、[外部コード]が展開され、呼び出されているモジュールが表示されます。

ここに画像の説明を入力してください

展開すると、呼び出されているdllが表示され、をクリックしてディスク上の場所を取得できます。Symbol Load Information...

ここに画像の説明を入力してください

これにより、ディスク上の場所を示すダイアログが開きます

ここに画像の説明を入力してください

.pdbこれらの外部ファイルをデバッグする場合は、dllのファイルを取得し、と同じフォルダーに配置する必要があります。.dll

これにより、Load symbols(上記のスクリーンショット2のメニューSymbol Load Information)デバッグを開始できるようになります。

.pdbファイルの取得について詳しくはこちらをご覧ください。

そして、これが生成されているEF.pdbの実際の例です。

これで時間を節約できれば幸いです。

于 2015-06-25T08:02:40.393 に答える
16

これらは、シンボル情報が現在利用できない行ですVisual Studio Debugger。つまりDebugger、実行された行からコードを取得することはできません。

シンボル情報をダウンロードまたは設定できるので、現在書いています。

詳細については、これを読むことができます:方法:シンボルの場所と読み込み動作を指定する

于 2012-07-24T10:56:15.097 に答える
5

「外部コード」という表記は、「マイコード」に属さないすべてのものを指します。

これは、MSDNドキュメントのここで説明されている方法です。方法:コールスタックウィンドウを使用する

マネージコードでは、デフォルトで。コールスタックウィンドウは、非ユーザーコードの情報を非表示にします。>隠し情報の代わりに、次の表記が表示されます。

<[外部コード]>

非ユーザーコードとは、「マイコード」以外のコードのことです。`

Your Code自分で書いたものはすべて自分で書いたと思っていたかもしれません。したがって、この定義では、外部dllに属するすべてのものが呼び出しスタックのトレースで省略されます。

さらに、How to:Step Into Just My Codeによると、デバッガーが非ユーザーコードをトレースしようとすることを拒否する可能性があります。

ここでは、user code実際の内容について説明します。

ユーザーコードと非ユーザーコードを区別するために、Just My Codeは、DBGファイル、PDBファイル、および最適化の3つを調べます。

于 2012-07-24T11:03:57.827 に答える
1

これらの行は、現在ロードしているデバッグシンボルによって参照されていません。

このコードは、外部DLLの一部である場合もあれば、CLR内のネイティブコードである場合もあります。それがどのモジュールであるかがわかっていて、それらのデバッグシンボルがある場合は、それらをVisualStudioに手動でロードできます。

于 2012-07-24T10:57:51.730 に答える
0

コード/シンボルがないメソッド。.NETFrameworkやサードパーティのアセンブリのように。

于 2012-07-24T10:58:22.143 に答える
0

[デバッグ]メニューの[プロセスにアタッチ]アクションを使用して、ホストアプリの実行中のインスタンスをデバッグできます。(実行中のプロセスには、デバッグシンボルの.pdbファイルがあります)。

于 2012-07-24T11:00:23.613 に答える