問題タブ [windbg]

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

windbg - 記号なしのWinDBGダンプ分析

私がMicrosoftサポートに電話したところ、WinDBGを使用して私のミニダンプの1つを分析し、発生している正確な問題を特定することができたという事件が発生しました。WinDBGが同じダンプを分析し、スタックトレースを通過できませんでした。私は無知であるために黄金のナゲットを見つけることができないと思いますが、Microsoftは彼らがそれを自分で発掘するために何をしたかを教えてくれません。ここで難しい部分について助けを得ることができるチャンスはありますか?

この状況には、ベンダー提供のWebサービスへの.NET1.1呼び出しが含まれていました。1泊1時間、数週間、サービスに対して認証できませんでしたが、接続は失敗しませんでした。停止するたびに、サービスがオンラインに戻るまで数十のスレッドを停止しました。

DebugDiagとReportを実行すると、スレッド49がハングしていることがわかり、そのスレッドに対して!clrstackを実行します。

0:049> !clrstack
succeeded
Loaded Son of Strike data table version 5 from "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorsvr.dll"
Thread 49
ESP EIP
1382ec64 7c82860c [FRAME: NDirectMethodFrameStandalone] [DEFAULT] I4 System.Net.UnsafeNclNativeMethods/OSSOCK.recv(I,I,I4,ValueClass System.Net.Sockets.SocketFlags)
1382ec78 10fb1fef [DEFAULT] [hasThis] I4 System.Net.Sockets.Socket.Receive(SZArray UI1,I4,I4,ValueClass System.Net.Sockets.SocketFlags)
1382ecb8 10fb1e65 [DEFAULT] [hasThis] I4 System.Net.Sockets.NetworkStream.Read(SZArray UI1,I4,I4)
1382ece4 10fb1dd1 [DEFAULT] [hasThis] I4 System.Net.TlsStream.ForceRead(SZArray UI1,I4,I4)
1382ed00 10fb1cc4 [DEFAULT] [hasThis] SZArray UI1 System.Net.TlsStream.ReadFullRecord(SZArray UI1,I4)
1382ed20 10a6f7df [DEFAULT] [hasThis] Class System.Exception System.Net.TlsStream.Handshake(Class System.Net.ProtocolToken)
1382ed44 10a6f59b [DEFAULT] [hasThis] Void System.Net.TlsStream..ctor(String,Class System.Net.Sockets.Socket,Boolean,Class System.Security.Cryptography.X509Certificates.X509CertificateCollection)
1382ed5c 10a6f4d0 [DEFAULT] [hasThis] ValueClass System.Net.WebExceptionStatus System.Net.Connection.ConstructTlsChannel(String,Class System.Net.HttpWebRequest,ByRef Class System.Net.Sockets.NetworkStream,Class System.Net.Sockets.Socket)
1382ed78 10a6f47b [DEFAULT] [hasThis] ValueClass System.Net.WebExceptionStatus System.Net.Connection.ConstructTransport(Class System.Net.Sockets.Socket,ByRef Class System.Net.Sockets.NetworkStream,Class System.Net.HttpWebRequest)
1382edac 10a693d7 [DEFAULT] [hasThis] Void System.Net.Connection.StartConnectionCallback(Object,Boolean)
1382f028 791b7f92 [FRAME: ContextTransitionFrame]

(!clrstack -pは私には機能しません。これは、パラメーターを要求しないのとまったく同じ情報を返します。これは、コードのプライベートシンボルがないためだと思います。!doも機能しません。 dumpobjは行います。サーバー上で実行しているため、mscorwksではなく「.loadbysos mscorsvr」を介してsosをロードしました。sosのロードが何らかの理由で間違っている可能性がありますか?)

とにかく、マイクロソフトは親切にも彼らが見つけたものの一部を教えてくれました。彼らは私に彼らが引っ張ったスタックトレースを教えてくれました、そして私は同じものを引っ張りました。(それはクールです。)しかし、スタックトレースから、彼らは次の情報を抽出しました。どのように?

- So the above thread is waiting on a socket. The socket details are mentioned below
SOCKADDR @ 01285dc0
sin_family = 2 (IP)
sin_port = 443
sin_addr = 206.16.40.219

そして、彼らは私に吊るされたオブジェクトの名前を教えてくれたので、私はそれを捨てることができました、そして私はそうすることができます。

0:049> !dumpobj 0x09278dbc
Name: System.String
MethodTable 0x79b946b0
EEClass 0x79b949fc
Size 140(0x8c) bytes
mdToken: 0200000f (c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll)
String: https://www.vendorname.com/services/v2006/Authentication

彼らはどのようにしてそのスタックトレースからプライベートシンボルなしでそれらのオブジェクトを識別するようになりましたか?管理者として、私はこのコードをデバッグモードでコンパイルすることも、最後の手段を除いてデバッグコードを本番環境にデプロイすることもできません。マイクロソフトは私が持っているのとまったく同じ情報を持っていて、彼らは答えを見つけたので、私が無知のこぶを乗り越えることができればそれを見つけることができると思います。

(1つの回答ごとに、WinDBGシンボル検索パスには次のように記載されています。 SRV*D:\Tools\Debuggers\Symbols*http://msdl.microsoft.com/download/symbols

ありがとうございました。

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

debugging - より優れた GUI を備えた WinDBG の代替品はありますか?

VSをインストールできない本番環境の問題を分析するために、ときどきWinDBGを使用しています。非常に強力なツールであることは間違いありませんが、使用するのは少し面倒です。製品は頻繁に更新されますが、その GUI は Win95 の時代にさかのぼり、その使いやすさはそれに応じています。思い通りにウィンドウをレイアウトするために GUI と戦わなければならず、それらすべてのテキスト コマンドを覚えなければならないことは、最近のデスクトップ アプリケーションの標準としては非常に低いものです。

私の知る限り、WinDBG はコマンド ライン デバッガーである CDB の上に構築されています。そのため、既存の恐竜を置き換える現代の GUI ラッパーを構築することはそれほど難しくありません。誰もそれをやったことがありますか?WinDBG に対して複雑な感情を抱いているのは私だけでしょうか?

(ちなみに、ダンプを作成してVSがある場所に戻すことができることは知っていますが、64ビットプロセスをデバッグする必要がある場合があり、64ビット開発マシンはありません。悲しいですが、本当です)

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

windbg - bp がヒットすると、windbg/cdb がハングする

cdb または windbg を使用してデバッグしていて、自分のマシンの特定のアプリケーションにアタッチしているときに、cdb または windbg が頻繁にハングするという問題がありますが、常にではありません。

この記事を見つけました: http://www.nynaeve.net/?p=164は、シンボルのロード競合状態が問題であると述べていますが、シンボルを強制的にロードし、実際にはアプリ内でブレークポイントが機能し、それでも問題ありません。他の場所に吊るしてください。

別のデバッガーでアタッチしたときの cdb 自体のスタックを次に示します。

!analyze は、APPLICATION_HANG_BusyHang が問題のバケットであり、'ReadNonConLine' が問題のある関数であることを報告します。

スタックに関する限り:

ReadNonConLine には、0014ebb0 の文字列 "g" がパラメーターとして渡されます。これは、ぶら下がっているブレークポイントで実行したコマンドの一部である可能性があります (bp foo"dt a; g" のようなものでした)。

ReadFile は、最初のパラメーターとしてハンドルを受け取ります。しかし、値が -2 であることに驚きましたが、これは有効に見えません。

どんな助けでも大歓迎です。

ありがとう!アーロン

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

debugging - WinDbg が有用な情報を表示しない

最初に、私は完全な WinDbg の初心者であると言わせてください。そのため、これは簡単な質問かもしれません...

例外をスローしているため、デバッグしようとしているアプリケーション (「MyApp」 - 罪のない人を保護するために名前が変更されました!) があります。これはユーザー マシンでのみ発生します。開発マシンでは再現できませんでした。そこで、ユーザーのマシンに DebugDiag をセットアップし、フル ダンプをキャプチャしました。次に、WinDbgにダンプをロードし、何が起こっているのかを把握しようanalyze -vkpしました...しかし、これらのどちらも、探している情報-関数(そしてできれば行番号)を提供していないようです問題を引き起こしている行の...シンボルファイルパスで「MyApp.pdb」へのパスを指定して、シンボルファイルをロードしたと思います:

まず、 からの出力は次のkpとおりです。

私が具体的にデコードしようとしている行は「MyApp!DllMain+0x65329」です。これは実行中と思われる最後の行であり、例外がスローされているように見える malloc 呼び出し内でエラーが発生しているためです。 . ソースファイルと行番号の代わりにモジュールとオフセットのみを表示するのは何が間違っていますか?

また、malloc 呼び出しの上の行が再び MyApp に戻っている理由もわかりません。誰かがそれを説明できるかもしれません。

念のため、「analyze -v」の出力は次のとおりです。

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

windbg - Windbg:SOS.dll:!gcroot:DOMAIN(xxx):HANDLE(Pinned):それは本当にオブジェクトが固定されていることを意味しますか?

SOS.dllWindbg拡張機能に関するドキュメントはまばらなようです。!gcroot <address>を発行した後、次を含むものが表示されます。

「HANDLE(Pinned)」は、このオブジェクトをルート化しているタイプGCHandleType.PinnedのGCHandleがあることを本当に意味しますか?

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

windows - ハンドルはどこに割り当てられましたか?

WinDbg を使用して、ハンドルの割り当てにつながるコールスタックを知ることができるかどうか疑問に思っています。

例えば:

このサンプルをビルドして WinDbg で起動すると、次の行の上のサンプルで、ハンドルを割り当てたコールスタックを取得できます。

コマンドをいじっています!handleが、これまでのところ進歩はありません。

これは、リーク分析を処理するのに適しています。私は認識し!htrace -enable!htrace -diffいますが、これは別の使用シナリオです (何らかの方法で組み合わせる方法や他の使用ベクトルがない限り、情報を提供してください)。

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

.net - デバッグ中に特定のインターフェイスを実装する型のすべてのインスタンスを見つける方法

特定のインターフェイスを実装する型のヒープで現在のすべてのインスタンスを見つける方法を探しています (WinDbg のデバッグ中)。インターフェイスのインスタンスを作成できるという意味ではインターフェイスは型ではないため、ヒープを検査しても明らかに表示されません。つまり!dumpheap、ここではほとんど役に立ちません。

ただし、!dumpmt -md特定の MT では、の数がリストさIFacesIFaceMapます。私が知る限り、この数値は、型が 1 つ以上のインターフェイスを実装しているかどうかを示しているようです。型でフラグ メソッドを使用する場合-mdも一覧表示されます。

残念ながら、!dumpmd私が知る限り、与えられたメソッドをインターフェイスに関連付けていないため、これを使用して実装されたインターフェイスを確立することはできません。

この情報はメモリのどこかで入手できると思いますが、どこを見ればよいかわかりません。どんな入力でも大歓迎です。

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

assembly - Windbg のアセンブリ コードを理解する

Windbg でいくつかのコードをデバッグしていましたが、一部のアセンブリ コードを理解できません。

誰かがこのステートメントの意味を説明できますか?私はこれがcallステートメントであることを知っていますが、028d1170アドレスにジャンプする方法を知っています

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

c# - WinDbg を使用してクラッシュ ダンプから生メモリ内のメソッド パラメーターを検査する

お客様の 1 人がクラッシュを報告しました。彼女は、未処理の例外の後に次の標準エラー メッセージを見ました。

「アプリケーションが処理できない例外を生成しました... アプリケーションを終了するには [OK] をクリックしてください。アプリケーションをデバッグするには [キャンセル] をクリックしてください。」

DebugDiag を使用して、このプロセスのダンプを生成しました。私は今、ダンプを見ています。

!threads は、マネージド スレッドで例外を示しました。ネストされた例外がいくつかありました。これは一番下にありました:

コードは Crystal Report をフォームでユーザーに表示しました。レポートの表示中にアプリケーションが何かをしようとして、System.AccessViolationException を受け取りました。

NativeWindow.Callback ソースを見ると、次のようになります。

例外の原因となったメッセージ、wParam、および lParam 引数を知りたいです。(正しい例外オブジェクトを見ていることも確認したいと思います。)これは、UI スレッドへの呼び出しである可能性があります。または、通常の Windows イベントである可能性があります。

スレッド環境ブロックを取得しました:

そしてスタックメモリをダンプしました:

したがって、署名が次の場合: SP IP 0013E9A4 7B1C8512 NativeWindow.Callback(IntPtr, Int32, IntPtr, IntPtr)+0x72

  1. スタック上のパラメーターは正確にはどこにありますか?
  2. それらを調べて値を取得するにはどうすればよいですか?

根本的な原因を見つけたような気がしません。ThreadException ハンドラがあります。なぜ呼ばれなかったのですか?何が原因System.AccessViolationExceptionですか?

ユーザーが「アプリケーションが例外を生成しました...」というエラー ダイアログで停止したため、!analyze -v報告されたことに注意してください。STATUS_BREAKPOINT