問題タブ [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.
c++ - R6025 ピュア バーチャル コールのキャプチャ
現在、未処理の例外の MiniDumps をキャプチャしてSetUnhandledExceptionFilter
いますが、「R6025: pure virtual function」というメッセージが表示されることがあります。
純粋な仮想関数呼び出しがどのように発生するかを理解しています。それらをキャプチャして、その時点で MiniDump を作成できるかどうか疑問に思っています。
c++ - Windows で dbghelp.dll を使用せずにスタック トレースを取得するにはどうすればよいですか?
Windows で dbghelp.dll を使用せずにアドレスのスタック トレースを取得するにはどうすればよいですか?
アドレスに関連付けられているシンボルや関数名を知る必要はありません。アドレスのリストが必要なだけです。これは、*nix システムのバックトレースに似たものです。
ありがとう!
c++ - Windows プロセスでアンロードされたモジュールのリストはどこにありますか?
/SUBSYSTEM:NATIVE
クラッシュした場合に備えてミニダンプを生成したいネイティブ (のような) Windows プログラムがいくつかあります。通常は を使用dbghelp.dll
しますが、ネイティブ プロセスは からエクスポートされた関数しか使用できないため、使用ntdll.dll
できません。
だから私はダンパーを自分で実装しました。ほとんど完了していますが、残念ながら、クラッシュしたプロセスでアンロードされたモジュールのリストを見つけることができませんでした (WinDbg が表示できるため、リストは確かにどこかに保存されています)。
Windows プロセスでアンロードされたモジュールのリストはどこにありますか?
編集: リストは確かにプロセス メモリのどこかに保存されます。モジュールがアンロードされた後にリストをアタッチしても、WinDbg はリストを表示できます。WinDbg のドキュメントにもメモがあります。
Microsoft Windows Server 2003 以降のバージョンの Windows では、ユーザー モード プロセスのアンロードされたモジュール リストが維持されます。[...]
debugging - ミニダンプが良いコール スタックを提供しないのはなぜですか?
私は何年にもわたって多くのゲーム プロジェクトでミニダンプを使用してきましたが、有効なコール スタックを持つ可能性は約 50% のようです。コールスタックを改善するにはどうすればよいですか?
最新の dbghelp.dll を exe ディレクトリに入れてみました。それはいくつかを助けるようです。
Visual Studio 2008 または 2010 はどちらが優れていますか? (私はまだ VS 2005 を使用しています)。
私が使用するコードは、このサンプルのようになります。
c++ - DbgHelp.dll は Windows に組み込まれていますか? そこにあると信頼できますか?
CodeProject の Jochen Kalmbach の StackWalker クラスを使用して、DLL で例外が発生したときにスタック トレースを生成します。
DbgHelp.dll に依存しています
DbgHelp.dll は Windows Vista、WS2008、Windows 7 に組み込まれていますか?
Microsoftの The Debugging Tools for Windowsについては知っており、DbgHelp.dll がそのパッケージに同梱されていることも知っています。しかし、私のマシンの %windir%\system32 にも DbgHelp.dll が見つかりました。
デフォルトでインストールされていない場合、DLL のデバッグ ビルドで再配布する方法はありますか?
windows - dbghlp と pdb を使用して構造体のフィールド名とオフセットを取得する方法
Windbg の dt コマンドと同じ方法で、構造体のフィールドとオフセットをダンプしたいと考えています。たとえば、Microsoft Public シンボルにある _PEB 構造をダンプしたいとします (windbg の DT コマンドが機能するため)。
MSDNのドキュメントから、SymFromName関数でこれを実行できるはずであることがわかりました。以下は、SymFromNameでLastError 126(指定されたモジュールが見つかりませんでした)で失敗したコードです。登録されたコールバックから、次の出力が得られます。
コード:
c++ - Pdb ファイルにはパブリック関数の引数名が含まれていますか?
パブリック メソッドの関数引数名を調べる必要があります。型は PDB シンボルと DIA シンボルから簡単に取得できますが、関数の引数名もトレースして引き出す方法はありますか?
ネイティブの pdb シンボルに関心があります。
c++ - C++ カーネル タイプのリストを取得する必要がありますか?
敬具!!
「CRITICAL_SECTION」、「_LARGE_INTEGER」、「_SECURITY_ATTRIBUTES」などのカーネル タイプの完全なリストが必要です。基本的に、デバッグ用 SDK (現在は DIA SDK または DbgHelp を使用) から、指定されたクラス名を型としてクラスのすべてのデータ メンバーを抽出しています。
ここで、型 (クラスや構造体など) に上記のようなカーネル レベルのオブジェクトが含まれている場合、それらの型も抽出します (その型の詳細、たとえばデータ メンバーとその型)。
カーネル レベルのオブジェクトと型の抽出をブロックする必要があります。ユーザー定義の型だけが必要で、これらの型には、いくつかのユーザー定義型 (int、float、double、char、std::string など、または SomeUDT obj など) のネイティブ型を持つデータ メンバーのみが含まれます。
他に抜け道はあるのだろうか…?
よろしくウスマン
c++ - DBGHelp.dllは、デバッグバージョンでmsvcrt.dllのロードを引き起こします
私のアプリケーションはVC6sp6でコンパイルされ、DBGHelp.libを使用してスタック情報を取得します。コードは、デバッグとリリースのコンパイルで類似しています。問題は、デバッグバージョンを実行するときに、DBGHelp.dllがmsvcrt.dll(リリースバージョン)をロードすることです。msvcrtd.dllは、とにかく私のデバッグリンクによってすでにロードされています。そのため、デバッグバージョンのプロセスにmsvcrtd.dllとmsvcrt.dllの両方が含まれることになります。dspはデフォルトのライブラリをロードするように設定されており、msvcrt(d).libは直接言及されていません。DBGHelp.dllを使用するコードを取り出し、dspリンクリストからDBGHelp.libを削除すると、msvcrt.dllがロードされません。
これを修正するにはどうすればよいですか?
デバッグの実行にはmsvcrtd.dllのみが必要です。
デバッグ用の特別なバージョンのDBGHelp.dll(msvcrtd.dllを使用する)はありますか?