問題タブ [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.

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

visual-c++ - コンパイル時に DbgHelp のバージョンを検出するにはどうすればよいですか?

DbgHelpのリファレンス マニュアルには、すべてのバージョンと、導入された変更点が適切に一覧表示されています。コンパイル時にバージョンを検出するにはどうすればよいですか?

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

windows - デバッグ (Win): DIA と DBGHELP

短く簡潔に:

DIA (Debug Interface Access) ライブラリと DBGHELP ライブラリの実際の違いは何ですか? DIA は COM ベースであり、非常に強力であるように思われます (また、マネージド プロセスとアンマネージド プロセスで使用できる) のに対し、DBGHELP は非常に便利に使用できるように見えますが、可能性は低くなります。

これら2つの違いはどこにあり、一方では何ができるが、他方では何ができないかを説明できる人はいますか? 私はインターネット上で完全な決定的な情報を見つけるのに本当に苦労しています:(

これが退屈な質問のように思われる場合は申し訳ありません。あなたが私のために持っている答えに感謝します! :)

よろしく PuerNoctis

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

dbghelp - デバッグシンボルとバイナリを並べて保存する方法

最近、SymChkを使用してMicrosoftシンボルストアからシンボルをダウンロードすると、PDBだけでなくDLLも表示されることに気付きました。SymChk / SymStoreなどの標準のMicrosoftツールを使用して、バイナリとシンボルの両方を保存できるかどうか疑問に思っていますか?

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

windows - Windows PDBファイルに同じアドレスの複数のシンボルが含まれていますか?

重複の可能性:
2つの関数が同じアドレスを出力するのはなぜですか?

(DbgHelp APIを介して)それらを処理するアプリケーションのPDBシンボルファイルを使用しています。PDBファイルに同じアドレスの複数の異なるパブリックシンボルエントリが含まれるという奇妙な問題に遭遇しました!

たとえば、Windows 7(x64)でkernel32.dll(wow64)の最新のMicrosoft PDBファイルを使用すると、次の情報をダンプして、同じアドレス0x10b1a6eの31の異なるエントリを確認できます。

上記の例は、重複を含む多くのアドレスの1つです。通常、任意のアドレスに1つのシンボルエントリがあります。同じアドレスAFAIKに複数のシンボルエントリがあるのは意味がありません!!

誰かが私に次のことを教えてもらえますか?

  • なぜこれが起こっているのですか?

  • これらの重複したエントリを一意の場所に解決できますか?

ありがとう。

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

c++ - .pdb の関数アドレスが .exe と異なるのはなぜですか?

SymEnumSymbols によって .pdb ファイルからメイン関数のアドレスを読み取りました。値は 0x0100116e0 です

しかし、VS2008 のディスサンブル コードでのこの関数のアドレスは 004116E0 です。

次に、2 つの異なるアドレスを SymGetSymFromAddr64 に渡して結果を確認しようとしましたが、予想どおり同じ funcitun シンボルを取得しました。唯一の違いは、PIMAGEHLP_SYMBOL64 のアドレス メンバーで、1 つは 100116e0 で、もう 1 つは 4116E0 でした。また、Microsoftのdbh.exeで確認しようとしましたが、コマンドは

メイン関数のアドレスは TestsymbolLookup.exe で一意ですが、なぜ 2 つの異なる回答が得られたのでしょうか?

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

delphi - EExternal例外中にEXCEPTION_POINTERSを取得するにはどうすればよいですか?

どうすればEXCEPTION_POINTERS、つまり両方を取得できますか?

  • PEXCEPTION_RECORD
  • PCONTEXT

EExternal例外中のデータ?

バックグラウンド

Windowsが例外をスローすると、PEXCEPTION_POINTERS;が渡されます。例外情報へのポインタ:

DelphiEExternalが例外をスローすると、その情報の半分しか含まれていませんPEXCEPTION_RECORD

例外の間に、どのようにしEExternalて両方を取得しますか?

使用例

MiniDumpWriteDumpDelphiの関数を使用してミニダンプを作成しようとしています。

この関数には、いくつかのオプションのパラメーターがあります。

基本的なレベルでは、3つのオプションのパラメーターを省略できます。

そしてそれは成功します。欠点は、ミニダンプに例外情報がないことです。その情報は(オプションで)4番目のminiExceptionInfoパラメーターを使用して渡されます。

これは良いEXCEPTION_POINTERSことですが、例外が発生したときにWindowsによって提供されるを取得する方法が必要です。

TExceptionPointers構造には2つのメンバーが含まれます。

EExternalDelphiの例外がすべての「Windows」例外のベースであり、必要なものが含まれていることを私は知っていますPExceptionRecord

ただし、関連付けられたは含まれていませんContextRecord

PEXCEPTION_RECORD十分ではありませんか?

に渡そうとするEXCEPTION_POINTERSと、 nilMiniDumpWriteDumpのままになります。ContextRecord

その後、関数はエラーで失敗します0x8007021B

ReadProcessMemoryまたはWriteProcessMemoryリクエストの一部のみが完了しました

どうSetUnhandledExceptionFilterですか?

SetUnhandledExceptionFilter必要なポインタを使って取得してみませんか?

それに関する問題は、例外がフィルタリングされていない場合にのみ、フィルタリングされていない例外ハンドラが起動することです。これはDelphiであり、例外を処理するためです。

アプリケーションは、WER障害で終了することはなく、また終了することも望んでいません。

EXCEPTION_POINTERS中に取得するにはどうすればよいEExternalですか?

注:バックグラウンド以降はすべて無視できます。それは私をよりスマートに見せるために不必要に設計されたフィラーです。

先制的な卑劣なHeffernanのコメント:Delphi5の使用をやめるべきです。

ボーナスリーディング

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

windows - 装飾されていない Microsoft シンボル: SomeClass::`vftable'{for `Foo::Bar'}

UnDecorateSymbolNameWfrom dbghelp を使用して Microsoft シンボル名の装飾を解除しています。で装飾を解除するとUNDNAME_COMPLETE、シンボル名に、私が理解しているように、コンパイラが追加した情報が含まれることがあります。forたとえば、vftable シンボルには、キーワードの後に​​クラス/インターフェース名が続く中括弧ブロックが含まれることがあります。

SomeClass::'vftable'{for 'Foo::Bar'}

"{for 'Foo::Bar'}"名前の部分が何を意味するのか誰か教えてもらえますか?

さらに、これに関するドキュメントを誰かが知っているので、何も見つからないので読むことができます。

どうもありがとう!

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

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に記号が表示されない

    ここに画像の説明を入力してください

も参照してください

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

winapi - Windows の破損したミニダンプ

プログラムがクラッシュすると、未処理の例外ハンドラーからミニダンプが作成されます。私が抱えている問題は、人々が私にクラッシュ ダンプを送ってきたことですが、Visual Studio 2010 でそれらを開こうとすると、破損していると表示されます (「ダンプ ファイルの形式が無効です」)。dbghelp.dllプログラムと一緒に配布していませんが、配布する必要がありますか? それがバージョンの問題である場合、Visual Studio は私に通知し、上記のメッセージを出力しないと思います。

ログを生成するために使用するコードは

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

debugging - DbHelp を使用してダンプ内の PEB (プロセス環境ブロック) にアクセスする方法

デバッガー エンジン API を使用してダンプ内の PEB を取得するを見つけました。これは DbgHelp を使用して可能ですか? DbgHelp を使用してコメントと例外情報を引き出す既存のコードを用意します。可能であれば、PEB から情報を取得したいと考えています。