問題タブ [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.
c# - sosex.mbp または sosex.mbm によって設定されたブレークポイントが機能しない
私は VS.NET 2010 を使用しています。非常に単純な .NET 4.0 アプリケーションをコンパイルしました。
コンパイル済みの実行可能ファイルを windbg 6.12.0002.633 で開きます。次のコマンドを入力して sosex をロードします
次に、次のコマンドを入力してブレークポイントを設定します
そして、プログラムを実行します。ブレークポイントにはヒットしませんでした。
何か案が?
* 編集 *
ここに、Marc の要求に従って、自分の環境に関する詳細を貼り付けます。
* 2012 年 8 月 17 日編集 *
colinsmith のおかげで、最も近い答えが得られたと思います。プログラムを 32 ビット プログラムとしてコンパイルしました。32 ビットの Windbg と 32 ビットの sosex を使用するように切り替えます。同じ手順に従って、ブレーク ポイントを設定します。さて、もしそうなら!mbl
。ブレーク ポイント リストの表示が異なります。
以前は、行が表示されませんでした(PENDING JIT)
。プログラムを続行すると、Windbg はブレークポイントで正常に停止します。
64 ビット プログラムが動作しない理由がわかりません。64 ビットの sosex.dll と 64 ビットのプログラム シンボル パスを再確認しました。すべてが正しく見えます。おそらく、sosex.dll のバグでしょうか?
.NET 4.0 を使用しており、windbg は Windows 2008 R2 64 ビットで実行されています。
windbg - !mbpを使用したSOSEXでブレークポイントが機能しない
.NET Framework 4.0の32ビット環境でWinDbgのSOSEXを使用してC#アプリケーションをデバッグしようとしています。32ビットv4.0にはsosex.dllを使用しています。
手順は次のとおりです。
sxe ld:mscorlib
sxe ld:clrjit
load
sosex.dllへのパス!mbp application.cs 34
(これにより、34行目にブレークポイントが設定されます)
ここでは問題なく動作します。
ただし、WinDbgを新しく起動し、C#application.exe
プロセスに接続して必要な手順を実行すると、ブレークポイントが機能しません。
lm
私が観察したことの1つは、WinDbgでコマンドを初めて実行したとき、出力には。のみが表示されたことapplication.exe
です。
しかし、次回、lm
コマンドはすでにロードされているすべてのモジュール(、、clrjit
などmscorlib
)を表示しました
これがブレークポイントが機能しない理由ですか?
windbg - sosex!dlk が Windows 7 で永久に実行されるのはなぜですか?
最近、Windows XP から Windows 7 に移行しましたが、その移行以来、WinDbg で Sosex から !dlk コマンドを実行できないことがわかりました。以前は、コード内のデッドロックをキャッチする便利な方法でした。
Sosex で知っておくべき何か変更がありましたか?
Windows 7 64 ビット マシンで実行された x86 プロセスからのクラッシュ ダンプを Windows 7 64 ビットでデバッグしています。
それまでの間、!syncblk を試すことができますが、!dlk はすっごく便利でした。
.net - WinDbg を使用してインスタンスのカスタム属性を見つける方法
windbg を使用して、インスタンスで定義されているすべてのカスタム属性を表示する方法はありますか? (クラス レベルで)
可能であれば、カスタム属性のフィールド値を確認できますか?
windbg - SOS/SOSEx が System.Collections.Generic.List.Enumerator の値を誤って解釈するのはなぜですか?
簡単な C# アプリを作成しました。
最後にブレークポイントを配置し、Visual Studio で実行してから、windbg を起動し、プロセスにアタッチしました (「非侵襲的」チェックボックスをオンにしました)。
次に、次のコマンドを入力しました。
私が得た出力は明らかに間違っていました (フィールドはすべてめちゃくちゃです。「現在」の下に「インデックス」の値、「バージョン」の下に「現在」の値、「インデックス」の下にバージョンの値が報告されているようです。 '. 正しいフィールドは 1 つだけです - 最初のフィールドです。
次に、代わりに SOS の !DumpVC を使用しようとしましたが、同じ混乱が生じました。
なぜこれが起こるのですか?
c# - SOSEX mdt コマンドの間違った出力
sosex !mdtコマンドで非常に奇妙な問題が見つかりました。
クラッシュ メモリ ダンプを調査し、 !mdtコマンドを使用してSystem.Web.EtwTraceクラスの静的フィールドの値をチェックしていました。
!mdt System.Web.EtwTrace
[s] _traceLevel : int
...
AppDomain '/LM/W3SVC/2/ROOT-1-130489393569613986' (00000000021a2d50): 0x0000000000000000
!DumpClass SOS コマンドを使用して値を再確認することにしました。
!DumpClass 000007feec7ddbb8
クラス名: System.Web.EtwTrace
....
共有静的 _traceLevel 6
SOSEX のバグのように見えますが、同じ問題に直面した人はいますか?