2011-01-07 7 views
5

delphi 2007アプリケーションでは、私たちはmadExceptを使用して私たちのために例外を処理しました。標準のダイアログを使用して、必要に応じてユーザーがメールでレポートを送信できるようにします。madExcept、現在のスタックの先頭を取得

この機能に少し追加したいと考えています。ユーザーが完全なレポートを送信しないことを選択した場合でも、例外はファイルに記録しますが、完全なレポートは記録しません。例外クラスとメッセージ、およびソースファイルと行番号が必要です。

最初の2つは簡単ですが、後者を見つけるための簡単な方法はありません。

私はIMEExceptionインターフェイスの形式で完全な例外レポートを持っています。私が見る限りでは、コールスタックはBugReportSectionsプロパティを介してのみ使用できます。このプロパティは私に平文のスタックを与えます。

madStackTrace.pasには、StackTrace()という機能があり、私に欲しいものを与えるはずです。それは、多くのパラメータを取り、そしてドキュメントは情報の少し短い..です

質問:それだけのスタックの一番上の項目を返すように 誰もが、StackTrace()に供給するための正しいパラメータを知っています例外がスローされたスレッド?

答えて

5

madStackTrace.pasには別の機能があります。StackAddrToStrは単一のアドレスを取り、そのフォーマットされたテキストを返します。クラッシュするスレッドのブロックexceptにいる場合は、グローバル変数ExceptAddrを渡すことができます。 madExceptコールバックのいずれかにいる場合は、代わりに `IMEException.ExceptAddr 'を使用してください。

+0

まだ文字列を返すが、これはmadMapFile.pasからGetMapFileInfos()に導かれ、私が望むものが得られるかもしれない。 – Vegar

+0

私はStackTraceのために必要なものを見つけたと思うかもしれません: 'StackTrace(true、false、false、@stack、exception.ExceptAddr、true、false);' – Vegar

+0

@Vegarもし動作していれば、 – mjn

関連する問題