問題タブ [sos]

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 投票する
2 に答える
721 参照

.net - デバッグ用のSoSAssistと同等の無料ツール

私は過去にSosAssistinを使用していましたが、それは素晴らしかったので、もう一度ダウンロードしようとしましたが、もう利用できません:(メモリ/スレッド/コールスタックを視覚的に表示できる他のツールはありますか?

0 投票する
3 に答える
6479 参照

.net - SOS(Son of Strike)デバッガー拡張機能の名前の背後にあるストーリーは何ですか?

「SonofStrike」という名前の意味は何ですか?それは何か意味がありますか、それとも単にクールに聞こえますか?

0 投票する
5 に答える
7072 参照

windbg - WinDbgを使用してデリゲートからメソッド名を取得します

次のデリゲートオブジェクトのダンプがあります。

デリゲートが指すメソッドの名前を取得するにはどうすればよいですか?

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

.net - WindbgとSOS、正しい例外で停止

断続的にSQLConnectionを強制終了する例外をスローするWindowsサービスがあり、それ以外の場合はサービスを完全に強制終了します。顧客のサイトでライブで実行されています。

Windbg + SOSを使用してクラッシュダンプを取得することを計画しました。これにより、自分の暇なときにこれをデバッグできます。

ただし、最初の試行では、(sxe clrコマンドを使用したときに)コードでキャッチおよび処理されていた最初のチャンスの例外が発生すると、デバッガーはサービスを停止しました。

ヘルプファイルは、最初のチャンスの例外ではなく、2番目の変更の例外をキャプチャするためsxd clrにの代わりにを使用することを示唆しているようです。sxe clr

ただし、私のテストでは、生成され、キャッチされ、処理された例外は、コマンドによってスローされた例外とまったく同じように扱われます(ただし、キャッチされません)sxd clr。つまり、メモされ、無視されます。

スローされた例外で停止しないというこの動作は、おそらくコードで明示的に例外をスローしたためですか、それともすべてのclr例外がsxdコマンドでデバッガーを停止できませんか?別のコマンドを使用する必要がありますか?

次に、Windbgはclrエラーを明確に認識しないため、特定の未処理の例外(つまり、InvalidOperationException)でのみ停止するように指示することはできますか?

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

c# - SOSを使用したWindbg、ac#構造体をダンプする方法

windbgを使用して構造体をダンプするにはどうすればよいですか?dumpobjectに似たdumpstructコマンドはありますか?または、dumpobjectは構造体をダンプすることもできますか?

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

wpf - sos.dll問題を使用してwpfをデバッグする

私はsos.dllを使用してwpfのメモリリークを見つけています。そして、wpfオブジェクトがリリースされていないことを発見し、 !gcrootを使用してリリースされない理由を調べようとしました。

それは私に次のような温暖化をもたらしました:

6c369950は有効なオブジェクトではないことに注意してください。

デバッグ情報のスニペット

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

windbg - WinDbgを介した値型と参照型

私はWindbgを初めて使用し、値と参照タイプ.NETについていくつかのことを理解しようとしています。これが私が使用しているコードです

ここでスリープ状態にする唯一の理由は、実行中のプロセスにWindbgをアタッチする時間を与えるためです。ブレークポイントを設定するのがより良い方法かもしれませんが、とにかくここに私の質問があります。

  1. Windbgがプロセスに接続されると、このスレッド#3に侵入しますが、ご覧のとおり、マネージドthead ID 3のスレッドはありません。このスレッドはデバッガーによって使用されているだけですか?!threadsコマンドで表示されない可能性のある他のスレッドはありますか?もしそうなら、私にすべてのスレッドを与えることができるコマンドはありますか?

0:003>!threads -special
ThreadCount:2
UnstartedThread:0
BackgroundThread:1
PresidentingThread:0
DeadThread:0
Hosted Runtime:no
PreEmptive Lock ID OSID ThreadOBJ State GC GC Alloc Context Domain Count APT Exception

0 1 bbc 0000000000190c50200a020有効000000000027f3ca8:000000027f3fd0 0000000000187e40 0 MTA
2 2 106c 0000000000198430 b220有効0000000000000000:0000000000000000 0000000000187e40 0 MTA(ファイナライザー)

OSID特殊スレッドタイプ
1e98DbgHelper2106c
ファイナライザー

0:003>!CLRStack
OSスレッドID:0xe6c(3)
管理対象スタックをウォークできません。現在のスレッドは
管理対象スレッドではない可能性があります。!threadsを実行して
、プロセス内の管理対象スレッドのリストを取得できます
0:003> kb
RetAddr:Args to Child:Call Site
00000000 77978778 : 0000000000000000 00000000 00000000 0000000000000000 00000000 776d466d:00000000 00000000 00000000 00000000:ntdll!DbgUiRemoteBreakin + 0x38 00000000 00000000 00000000 00000000 00000000 00000000:00000000 00000000 00000000 00000000:ntdll!RtlUserThreadStart + 0x1d 00000000 : ntdll!DbgBreakPoint
00000000
00000000 0000000000000000 00000000
778d8791 : 0000000000000000 0000000000000000 : KERNEL32!BaseThreadInitThunk+0xd
00000000
00000000 0000000000000000 00000000

  1. スレッド0は、私のMainメソッドを実行しているスレッドのようです。スタックオブジェクトのダンプを取得すると、MyStructが表示されず、何らかの理由でMyClassが2回表示されます。なぜ何かアイデアはありますか?

0:000>!CLRStack
OSスレッドID:0xbbc(0)
Child-SP RetAddr Call Site
000000000031edb0 000007fef6b32012 ConsoleApplication2.Program.Main(System.String [])
0:000>!DumpStackObjects
OSスレッドID:0xbbc(0)
RSP / REGオブジェクト名
000000000031edd800000000027f3c90ConsoleApplication2.Program + MyClass
000000000031ede8 00000000027f3c90 ConsoleApplication2.Program + MyClass
000000000031ee00 00000000027f3c70 System.Object [](System.String [])
000000000031ef88 00000000027f3c70 System.Object [](System.String [])
000000003 [](System.String [])
000000000031f198 00000000027f3c70 System.Object [](System.String [])

TIA

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

windbg - !ClrStack ローカル変数 - 値型か参照型か

ローカル変数が値型か参照型かを判断するにはどうすればよいですか?

0:000> !CLRStack -a
OS Thread Id: 0xf74 (0)
Child-SP RetAddr Call Site
000000000023e9c0 000007fef6b32012 ConsoleApplication2.Program.Main(System.String[])
PARAMETERS:
args = 0x00000000028f3c70
LOCALS:
0x000000000023e9e0 = 0x0000000000000000
0x000000000023e9e8 = 0x00000000028f3c90
0x000000000023e9f0 = 0x00000000000493e0

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

c# - 重複したインスタンスを表示する DumpStackObjects?

私は小さなテストプログラムを持っています。メイン スレッドのスタック オブジェクトを調べると、MyClassそこに 2 回表示されます。MyClassスタックに 2 つのオブジェクトがある理由はありますか?

0 投票する
4 に答える
3048 参照

.net - 32ビットと64ビットの間のCLRオブジェクトサイズを理解する

32ビットプロセッサと64ビットプロセッサのオブジェクトサイズの違いを理解しようとしています。簡単なクラスがあるとしましょう

したがって、32ビットマシンでは、整数は4バイトです。Syncblockを追加すると(さらに4バイト)、オブジェクトサイズは12バイトになります。なぜ16バイトを表示しているのですか?

64ビットマシンでは、整数は4バイトのままですが、変更されるのはSyncblockが8バイトになることだけです(64ビットマシンではポインターが8バイトであるため)。つまり、オブジェクトサイズは16バイトになります。なぜ24バイトを表示しているのですか?