問題タブ [sosex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1004 参照

.net - LOH にあるオブジェクト インスタンスのリストを取得する

マネージ ヒープにMyClassのインスタンスが数百あります。これらの一部はラージ オブジェクト ヒープにあります。以下は、さまざまなヒープ構造がどのように見えるかです

私の質問は1.ラージ オブジェクト ヒープにあるMyClass
のすべてのインスタンスのアドレスを見つけるにはどうすればよいですか。2.ラージ オブジェクト ヒープにあるMyClass のインスタンスで !ObjSize を実行する方法はありますか?

0 投票する
1 に答える
464 参照

c# - SOS.dll を使用してダンプ ファイルを分析しているときにガベージ コレクションがトリガーされたかどうかを確認する方法はありますか

「OutofMemory」例外の .dmp ファイルを分析しています。オブジェクトは非常に長い間メモリ内に留まっているため、SOS.dll または SOSEX を使用してガベージ コレクションがトリガーされたかどうかを確認するコマンドはありますか?

0 投票する
1 に答える
1125 参照

windbg - コール スタックに特定の .NET 関数を含むスレッドを取得しますか?

73 スレッドのユーザー モード ダンプがあります。それらの一部は管理され、一部はネイティブです。コール スタックに特定のマネージド関数が含まれているマネージド スレッドを見つけたいと思います。

デバッガーにSOSEX拡張機能をロードしました。

現在~*e !mk、すべてのマネージド スレッドをダンプしてから、それらを手動で参照して、必要なものを探しています。長すぎて面倒です。

より良い方法はありますか?

0 投票する
0 に答える
138 参照

c# - 警告: このアドレスに複数のマネージ メソッドがあります

C# アプリケーションに問題があり、警告や意味のある情報なしでランダムにクラッシュする可能性があります。同じデータをアプリケーションに渡すことができますが、同時にクラッシュすることはなく、時々クラッシュすることさえありません。

WinDbg を使用して、例外に関する情報を取得しました。NullReferenceExceptionエラーとともにスローされることがありAccess Violationます。

SOSEXを使用して、を使用してスタックを取得しました!mk。上部に次のスタックがあります。

で始まる行[WARNING: Multiple managed methods at this address]は特に気になります-これはどういう意味ですか?

スタックをボトムアップで見ると、この時点まではすべて問題ないように見えます。次に、へのランダムなメソッド呼び出しがそれをIEnumerable.FirstOrDefaultスローします。メソッドはそのVersionedSettings.GetSetting(...)ような呼び出しを行いません。これが、私が少し混乱している理由です。

編集: !verifyheapWinDbg で実行したところ、「ヒープの破損が検出されませんでした」という出力が表示されました。私の WinDbg に関する知識は限られているため、このコマンドがどれほど正確かはわかりませんが、追加する価値があると思いました。

何が起こっているのか誰か知っていますか?

0 投票する
1 に答える
397 参照

clr - CDB/WinDbg 内のマネージド スタックでスタックフレームからスタックフレームに移動する

多数のダンプ ファイルが提供されました。windbg/sosex コマンドを使用!dumpstack -EEすると、多くの場合、最後に次の行が表示されます。

残念ながら、でローカル変数を取得しようとしても、!clrstack -a適切な結果が得られません。

最後のフレーム以外のフレームに移動する方法はありますか? (このフレームでローカルを取得するため)。

ネイティブ モードでは、次のことができます。

次に、その前のフレームにローカルを含めることができます

!clrstack -a前のフレーム内でできるように、管理されたスタックで同じことを行う方法を知りたいです。このスタックフレームの関数パラメータの値/参照も知りたいです。

そのようなアクションを実行するコマンドはありますか?

0 投票する
1 に答える
212 参照

windbg - ループからコマンドを実行する

次のコマンドの各アドレスに対して !refs コマンドを実行したい

これを行う方法.次のようにループを作成できることを知っています

しかし、!refs を使用してループで使用できるオブジェクト アドレスにアクセスするにはどうすればよいでしょうか?

0 投票する
0 に答える
165 参照

c++ - DebugDiagv2 は、UNKNOWN_MODULE が最大のリークの原因であることを示しています

最もメモリを消費する関数は DomainBoundILStubClass.IL_STUB_PInvoke(UInt32) です。モジュールのベースアドレスは 0x00000000 であるため、おそらく「UNKNOWN_MODULE」モジュールです。関数の詳細は次のとおりです。

機能詳細

スタック トレースの上部または上部付近にこの関数を含むスタックがゼロであるため、何が呼び出されているのかわかりません。

これは、pinvoke された malloc へのすべての呼び出しを集約していると思います。あれは正しいですか?また、「割り当てタイプ」は C/C++ であるため、pinvoke された operator new への呼び出しも含まれますか?

0 投票する
0 に答える
263 参照

.net - .NET メソッド テーブルの分析時に !dumpmt が !dd と矛盾する

WinDBG と SOS を使用して .NET オブジェクトの内部を調べています。私は3つのメソッドを持つクラスを持っています。!dumpmt -md [address]コマンドを使用してメソッド テーブルをダンプすると、8 つのメソッドの説明が表示されます。

コマンドを使用してメモリをダンプするとdd [address]、3 つの方法が見つかりません (画像 - ピンクのボックスを参照)。また、値 0x0003 (赤い円) は、メソッド (仮想を含む) の総数を表すはずですが、非仮想メソッドの数のみを表すため、奇妙です。そして、ブラックボックスの値は何を表していますか?

ここに画像の説明を入力

0 投票する
2 に答える
184 参照

windbg - 16 進数と 10 進数の !objsize の不一致

!objsizeコマンドを使用して、オブジェクトの真の値を取得します。たとえば、以下のコマンドを実行すると、アドレス 00000003a275f218 のオブジェクトのサイズが 18 16 進数で、10 進数で 24 に変換されることがわかります。

ここまでは順調ですね。オブジェクトに対して同じコマンドを実行していますが、そのサイズが 16 進数と 10 進数で一致していないようです。 ここに画像の説明を入力

したがって、16 進数のサイズは 0xafbde200 です。calc を使用して 10 進数に変換すると、これは2948456960になりますが、コマンドの出力では 10 進数のサイズが-1346510336と表示されます。サイズに違いがある理由を誰かが理解するのを手伝ってくれますか?