問題タブ [dbghelp]
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.
visual-c++ - コンパイル時に DbgHelp のバージョンを検出するにはどうすればよいですか?
DbgHelpのリファレンス マニュアルには、すべてのバージョンと、導入された変更点が適切に一覧表示されています。コンパイル時にバージョンを検出するにはどうすればよいですか?
windows - デバッグ (Win): DIA と DBGHELP
短く簡潔に:
DIA (Debug Interface Access) ライブラリと DBGHELP ライブラリの実際の違いは何ですか? DIA は COM ベースであり、非常に強力であるように思われます (また、マネージド プロセスとアンマネージド プロセスで使用できる) のに対し、DBGHELP は非常に便利に使用できるように見えますが、可能性は低くなります。
これら2つの違いはどこにあり、一方では何ができるが、他方では何ができないかを説明できる人はいますか? 私はインターネット上で完全な決定的な情報を見つけるのに本当に苦労しています:(
これが退屈な質問のように思われる場合は申し訳ありません。あなたが私のために持っている答えに感謝します! :)
よろしく PuerNoctis
dbghelp - デバッグシンボルとバイナリを並べて保存する方法
最近、SymChkを使用してMicrosoftシンボルストアからシンボルをダウンロードすると、PDBだけでなくDLLも表示されることに気付きました。SymChk / SymStoreなどの標準のMicrosoftツールを使用して、バイナリとシンボルの両方を保存できるかどうか疑問に思っていますか?
windows - Windows PDBファイルに同じアドレスの複数のシンボルが含まれていますか?
重複の可能性:
2つの関数が同じアドレスを出力するのはなぜですか?
(DbgHelp APIを介して)それらを処理するアプリケーションのPDBシンボルファイルを使用しています。PDBファイルに同じアドレスの複数の異なるパブリックシンボルエントリが含まれるという奇妙な問題に遭遇しました!
たとえば、Windows 7(x64)でkernel32.dll(wow64)の最新のMicrosoft PDBファイルを使用すると、次の情報をダンプして、同じアドレス0x10b1a6eの31の異なるエントリを確認できます。
上記の例は、重複を含む多くのアドレスの1つです。通常、任意のアドレスに1つのシンボルエントリがあります。同じアドレスAFAIKに複数のシンボルエントリがあるのは意味がありません!!
誰かが私に次のことを教えてもらえますか?
なぜこれが起こっているのですか?
これらの重複したエントリを一意の場所に解決できますか?
ありがとう。
c++ - .pdb の関数アドレスが .exe と異なるのはなぜですか?
SymEnumSymbols によって .pdb ファイルからメイン関数のアドレスを読み取りました。値は 0x0100116e0 です。
しかし、VS2008 のディスサンブル コードでのこの関数のアドレスは 004116E0 です。
次に、2 つの異なるアドレスを SymGetSymFromAddr64 に渡して結果を確認しようとしましたが、予想どおり同じ funcitun シンボルを取得しました。唯一の違いは、PIMAGEHLP_SYMBOL64 のアドレス メンバーで、1 つは 100116e0 で、もう 1 つは 4116E0 でした。また、Microsoftのdbh.exeで確認しようとしましたが、コマンドは
メイン関数のアドレスは TestsymbolLookup.exe で一意ですが、なぜ 2 つの異なる回答が得られたのでしょうか?
delphi - EExternal例外中にEXCEPTION_POINTERSを取得するにはどうすればよいですか?
どうすればEXCEPTION_POINTERS
、つまり両方を取得できますか?
PEXCEPTION_RECORD
とPCONTEXT
EExternal
例外中のデータ?
バックグラウンド
Windowsが例外をスローすると、PEXCEPTION_POINTERS
;が渡されます。例外情報へのポインタ:
DelphiEExternal
が例外をスローすると、その情報の半分しか含まれていませんPEXCEPTION_RECORD
。
例外の間に、どのようにしEExternal
て両方を取得しますか?
使用例
MiniDumpWriteDump
Delphiの関数を使用してミニダンプを作成しようとしています。
この関数には、いくつかのオプションのパラメーターがあります。
基本的なレベルでは、3つのオプションのパラメーターを省略できます。
そしてそれは成功します。欠点は、ミニダンプに例外情報がないことです。その情報は(オプションで)4番目のminiExceptionInfoパラメーターを使用して渡されます。
これは良いEXCEPTION_POINTERS
ことですが、例外が発生したときにWindowsによって提供されるを取得する方法が必要です。
TExceptionPointers
構造には2つのメンバーが含まれます。
EExternal
Delphiの例外がすべての「Windows」例外のベースであり、必要なものが含まれていることを私は知っていますPExceptionRecord
。
ただし、関連付けられたは含まれていませんContextRecord
。
PEXCEPTION_RECORD
十分ではありませんか?
に渡そうとするEXCEPTION_POINTERS
と、 nilMiniDumpWriteDump
のままになります。ContextRecord
その後、関数はエラーで失敗します0x8007021B
ReadProcessMemoryまたはWriteProcessMemoryリクエストの一部のみが完了しました
どうSetUnhandledExceptionFilter
ですか?
SetUnhandledExceptionFilter
必要なポインタを使って取得してみませんか?
それに関する問題は、例外がフィルタリングされていない場合にのみ、フィルタリングされていない例外ハンドラが起動することです。これはDelphiであり、例外を処理するためです。
アプリケーションは、WER障害で終了することはなく、また終了することも望んでいません。
EXCEPTION_POINTERS
中に取得するにはどうすればよいEExternal
ですか?
注:バックグラウンド以降はすべて無視できます。それは私をよりスマートに見せるために不必要に設計されたフィラーです。
先制的な卑劣なHeffernanのコメント:Delphi5の使用をやめるべきです。
ボーナスリーディング
- MSDN:クラッシュダンプ分析(Windows)
(呼び出し方法の詳細な例
MiniDumpWriteDump
) - CodeProject:ミニダンプとVisual Studio .NETを使用したアプリケーションの事後デバッグ (概念、長所、およびミニダンプの生成と使用方法に関する一般的な説明)
- Stackoverflow:クラッシュしたときにプロセスのミニダンプを作成するにはどうすればよいですか? (ミニダンプの世界への最初の紹介)
- Stackoverflow:単一のアプリのMicrosoftエラーレポートを防ぐことはできますか? (Delphiでのフィルタリングされていないハンドラーの設定)
windows - 装飾されていない Microsoft シンボル: SomeClass::`vftable'{for `Foo::Bar'}
UnDecorateSymbolNameW
from dbghelp を使用して Microsoft シンボル名の装飾を解除しています。で装飾を解除するとUNDNAME_COMPLETE
、シンボル名に、私が理解しているように、コンパイラが追加した情報が含まれることがあります。for
たとえば、vftable シンボルには、キーワードの後にクラス/インターフェース名が続く中括弧ブロックが含まれることがあります。
SomeClass::'vftable'{for 'Foo::Bar'}
"{for 'Foo::Bar'}"
名前の部分が何を意味するのか誰か教えてもらえますか?
さらに、これに関するドキュメントを誰かが知っているので、何も見つからないので読むことができます。
どうもありがとう!
debugging - OlyDbgでMicrosoftSymbolServerを有効にする方法は?
OlyDbgバージョン2が最近リリースされました。デバッグのためのMicrosoftSymbolServerの使用をサポートするようになりました。
dbghelp.dllを介してMicrosoftコンパイラをサポートします。新しいのは、シンボルサーバー、dbghelpを使用したスタックウォーキング、およびプロシージャパラメータの名前のサポートです。
OlyDbgにMicrosoftSymbolServerを使用させるにはどうすればよいですか?
何を試しましたか?
長い答え:
- DbgHelp.dllがシンボルをダウンロードした後にシンボルが含まれるフォルダーをOlyDbgにポイントしました
- OlyDbgに、MicrosoftSymbolServerにアクセスしても問題ないと言った
- 私はOlyDbgにDbgHelp.dllを使用しても大丈夫だと言いました
- OlyDbg 2.0に付属しているDbgHelp.dllのバージョン(2008)をWindows8SDKに付属しているバージョンに更新してみました
システム環境変数を設定しました:
/li>OlyDbgが検索する「ディレクトリ」
SRV*d:\Symbols*http://msdl.microsoft.com/download/symbols
としてYouTubeビデオを追加しました
何がうまくいかないと思いますか?
- a)シンボルディレクトリが空です
- b)msdl.microsoft.comへのインターネットトラフィックはありません
c)OlyDbg2.0に記号が表示されない
も参照してください
- OllyDbgでOSシンボルファイルを使用するにはどうすればよいですか?(OlyDbg v1;知っていた男は不機嫌だったので答えることを拒否しました)
- OllyDbgでOSシンボルpdbファイルを使用する方法は?(OlyDbg v1)
- YouTube:ハウツー:MSデバッグシンボルサーバーでのOllyDbg v2.1dおよびv2.1.0.4の使用(警告:オーディオのミュート)
winapi - Windows の破損したミニダンプ
プログラムがクラッシュすると、未処理の例外ハンドラーからミニダンプが作成されます。私が抱えている問題は、人々が私にクラッシュ ダンプを送ってきたことですが、Visual Studio 2010 でそれらを開こうとすると、破損していると表示されます (「ダンプ ファイルの形式が無効です」)。dbghelp.dll
プログラムと一緒に配布していませんが、配布する必要がありますか? それがバージョンの問題である場合、Visual Studio は私に通知し、上記のメッセージを出力しないと思います。
ログを生成するために使用するコードは
debugging - DbHelp を使用してダンプ内の PEB (プロセス環境ブロック) にアクセスする方法
デバッガー エンジン API を使用してダンプ内の PEB を取得する例を見つけました。これは DbgHelp を使用して可能ですか? DbgHelp を使用してコメントと例外情報を引き出す既存のコードを用意します。可能であれば、PEB から情報を取得したいと考えています。