問題タブ [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.
windows - PDB ファイル クラッシュダンプ user.dmp
アプリケーションがクラッシュし、その結果、Windows プラットフォームでクラッシュ ダンプが生成されます。exeとdllファイルをお客様に送ります。顧客から user.dmp と drwtsn32.log ファイルが送られてきました。しかし、顧客は対応する pdb ファイルを持っていません。顧客は dll と exe ファイルを持っているだけです。そのため、この user.dmp ファイルを Windbg に添付すると、シンボルが取得されません。では、シンボルを取得するにはどうすればよいでしょうか。pdb ファイルを顧客に送信する必要がありますか? はいの場合、クラッシュが発生したときにこれらの pdb ファイルをどうする必要がありますか? 私は 3 つの異なるマシンを使用します: a) ビルド マシン、c) 顧客のテスト マシン、c) 私自身のデバッグ マシン (ビルド マシンとは異なります)。デバッグ用マシンにwindbgをインストールします。すべての pdb ファイルをビルド マシンからデバッグ マシンにコピーできます。私にお知らせください、
ありがとうコンコン
c++ - WinDbgを使用してVC++アプリケーションのクラッシュダンプを分析するにはどうすればよいですか?
WinDbgを使用してダンプファイルを分析するにはどうすればよいですか?
windows - 年齢が一致しない PDB を適切に一致するように変更するにはどうすればよいですか?
私たちの夜間のビルド プロセスは、対応する画像ファイルとは数時間異なる PDB ファイルを生成するなど、長い間機能していませんでした。その後、問題を修正しました。
ただし、シンボル サーバーの使用を開始したいのですが、これらの年齢が一致しない pdb ファイルを使用する必要があるため、使用できません。この問題を回避するには、windbg で .symopt +0x40 メソッドを使用します。つまり、すべての pdb ファイルを手作業で整理する必要があり、何年にもわたるリリースの後、それが積み重なっていきます。
windbg が pdb の経過時間をマークするために使用するメカニズムを変更し、強制的にイメージ ファイルと一致させる方法を探しています。ユーティリティChkMatchは同様のことを行いますが、pdb 署名用です。開発者はページで「ChkMatch は、実行可能ファイルと PDB ファイルの署名が異なるが同じ年齢である場合、それらを一致させることができます (PDB 署名と年齢の詳細については、この記事を参照してください)。年齢が異なる場合、ツールは作成できません。ファイルが一致します。」
hexeditor の内部を調べたところ、年齢に対応するビットのように見えるものさえ見つかりましたが、動作させることができなかったので、内部でさらにいくつかのトリックを引き出す必要があります。
何か案は?
編集:これが役立つかどうかはわかりませんが、私の特定のケースでは、PDBファイルも再作成する不要なdllの再リンクによって年齢差が発生しました。ただし、ビルド プロセスでは、元の dll (再リンク前) と再リンク後の pdb が格納されていました。そういう状況をどうにか手で再現しようと思いました。つまり、DLL の再リンクを強制しますが、どちらの場合も pdb を保存します。次に、2 つのファイルのバイナリ比較を実行して、それらがどのように変更されたかを確認できます。おそらく、これを自動的に行う何らかのパッチソフトウェアを実行しますか? コントロール ケースで正確に何が変更されたかを確認することで、会社のビルド プロセスで保存された DLL と PDB に同じことを行うことができるでしょうか?
編集:私はそれを理解しました!!!! 最初の回答に対するコメントの 1 つを参考に、「文書化されていない Windows 2000 の秘密: プログラマーズ クックブック」という書籍の PDF へのリンクを調べました。また、著者は pdb ファイル形式について詳しく説明しています。前に言ったように、私はすでに pdb を 16 進エディタにロードしており、年齢と署名を一致させたように見えるようにいくつかのビットをひっくり返しましたが、うまくいきませんでした。さて、W2k secrets book のユーティリティを使用して pdb を含まれているストリームに「爆発」させた後、ストリーム 3 に age への別の参照が隠されていることがわかりました!!!!!!!! それもひっくり返したら、windbgで一致しました。これは巨大です!!!! どうもありがとう....シンボル サーバー HERE I COME!
c++ - WinDbg を使用した変数の値
質問:
以下に示すように、WinDbg を使用してC++イテレータの値を表示する方法:
ノート:
使用?? C++ 式の評価コマンド。次のように表示されます。
- 別のコマンドで値を表示/印刷
*i
できますか- 間違っている場合は修正してください
c++ - WinDbgでデバッグするときにNULL文字が文字列に含まれているかどうかを確認する方法
例えば:
質問:
- 上記のNULLで終了する文字を確認するにはどうすればよいですか?
c# - WinDbb の出力を理解する
dll からいくつかの関数をインポートする Winform アプリケーション (C#) があります。
アプリケーションを実行すると、次の例外が発生することがあります。
System.AccessViolationException: 保護されたメモリを読み書きしようとしました。これは多くの場合、他のメモリが破損していることを示しています。
でキャッチしAppDomain.CurrentDomain.UnhandledException
ます。
だから私はWinDbgでそれをデバッグしようとしました。例外をキャッチして、次の出力を取得できました。
!分析 -v
どういう意味ですか?そして、私はそれをどうすればよいですか?
ヒントを事前にありがとう!!
c# - スタック オーバーフローのライブ デバッグ
マネージド コードの Windows サービス アプリケーションがあり、マネージド StackOverFlowException が原因で運用環境で時折クラッシュします。adplus をクラッシュ モードで実行し、SoS を使用してクラッシュ ダンプの事後分析を行ったので、これはわかっています。私はwindbgデバッガーをアタッチして、「ハンドルされていない例外に行く」ように設定しました。
私の問題は、マネージド スタックが表示されないか、スレッドに切り替えられないことです。デバッガーが壊れるまでに、それらはすべて取り壊されています。
私は Windbg の専門家ではありません。ライブ システムに Visual Studio をインストールしたり、リモート デバッグを使用したり、そのツールを使用してデバッグしたりすること以外に、問題のあるスレッドからスタック トレースを取得する方法について何か提案はありますか?
これが私がやっていることです。
!スレッド
...
XXXX 11 27c 000000001b2175f0 b220 無効 00000000072c9058:00000000072cad80 0000000019bdd3f0 0 Ukn System.StackOverflowException (0000000000c010d0)
...
この時点で、スレッドが完全に停止していることを示す XXXX ID が表示されます。
garbage-collection - windbg/sosを使用するときにGCを強制する
重複の可能性:
WinDbgから.NETガベージコレクションを実行できますか?
windbg / sosを使用してメモリリークをデバッグしていますが、sosにガベージコレクションを強制させる方法が見つかりません。sosコマンドのリストにgcが含まれていないようです。