2016-10-30 9 views
1

メモリスタックを取得するためにブルースクリーンクラッシュダンプ+ローディングシンボルを開くためにC#を使用する方法があるかどうかを知りたいと思います。C#を使用してブルースクリーンダンプファイルからスタックを取得する

私はwindbgプログラムを使用して手動で行う方法を知っています。したがって、問題を解決する可能性のあるC#を使用してWindbgに接続する方法がある場合は、

C#を使用してメモリスタックを抽出する方法、またはC#を使用してWindbgに接続する方法を知っている人はいますか?

ありがとうございます!

+0

WindbgはWindowsシステムDLLを使用してダンプを抽出しています。したがって、www.pinvoke.netにアクセスして、Windows DLLへのC#インターフェイスを取得することができます。 pinvokeでデバッグのための検索を行うことができます。 – jdweng

+0

WinDbg [スクリプトファイル](https://msdn.microsoft.com/en-us/library/windows/hardware/ff560137(v=vs.85).aspx)を作成し、C#を使用してプロセスを作成することができますコマンドライン 'windbg -cf myscript.txt -logo mylogfile.txt'を実行し、好きなC#メソッドを使って' mylogfile.txt'を解析してください。 –

+1

私はスクリプトオプションを使用します。 P/Invokeオプションは、デバッガのインターフェイスにとっては困難です。 –

答えて

0

感謝を入れて、しかし、私は、使用する方がはるかに簡単な方法を見つけましたそれは... Windbgはcmdを使って操作できるので、コマンドを見つけて理解するのはかなり難しいですが、cmdを使って操作することができました。

その後、C#からcmdコマンドを送信することができるので、単にC#を使用してコマンドを送信し、Windbgの-logoコマンドを使用してファイルに結果を書き込んでいます。

ファイルを読み取ると、結果を解析して、必要なものを抽出できます。

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

0

私はC#の解を知らないが、PyKd(Python)はあなたが望むことができる。私は主にWinDbgのためのプラグインとしてPyKdを使用していますが、

それはPythonモジュールだと

任意のPythonスクリプトで使用することができますので、WinDbgのための必要はありません。

しかし、コマンドの中にはWinDbgと同じように動作しないものがあります。 dbgCommand()はデバッガのコマンドを実行しようとしますが、これはWinDbgなしで作業するとおそらく不可能です。

説明から、loadDump(),closeDump(),setSymbolPath()setCurrentProcess()が必要です。プロセスとスレッドのクラスがあり、sp(スタックポインタ)プロパティが役に立ちます。

関連する問題