2012-01-14 9 views
16

私はDelphi 2010で書かれたアプリケーションでパフォーマンスの問題を調査しています。Delphiは、現在実行中のスレッドを表示するときにProcess Explorerが使用できるシンボルを出力しますので、関数名がわかりますか?Process Explorerで使用できるDelphiアプリケーションからデバッグシンボルを発行できますか?

私は実行可能ファイルの名前をブロックしましたが、関数のメモリアドレスしか与えられていないことがわかりました。可能ならば解決された関数名を持っています。 dllとntdll.dllはMSシンボルサーバを使用しているためです)。

私はこれがVC++ applications and WinDbgのためにできることを知っています...それはデルファイのアプリケーションとプロセスエクスプローラで行うことができますか?

enter image description here

+3

参照[map2dbg使用する方法についてこの回答]を(http://stackoverflow.com/a/1240500/9842) –

答えて

14

あなたが何をする必要があるかうん、プロジェクトがデバッグ情報付きでコンパイルし、リンカが詳細マップファイル(プロジェクトリンクオプション)を発することされていることを確認しています。わかりませんが、リンカオプションの "include remote debug symbols"もチェックする必要があります。

これを入手したら、ユーティリティを使用して、マップをProcessExplorerが使用するdbg形式に変換できます。

私たちはテストサーバーのいずれかのハングしたスレッドでスタックトレースを取得する必要があるときはいつでも、これを実行します。

我々が使用Map2Dbgユーティリティ:https://github.com/andremussche/map2dbg

+3

+1私がこのことを知ってとしませんでしたそれは私のソフトウェアがもちろんハングアップするのではなく、非常に便利です! ;-) –

+5

@DavidHeffernan:当然ではありませんし、どちらも私たちはしません:-)それはハングアップしません、それは単に反射のために一時停止! –

+0

DelphiはRTTIだけでなくリフレクションもサポートしていますか? –

関連する問題