17

Delphi 2009 の Exception クラスには、多くの新機能が追加されました。それらの多くは、スタックトレースの取得に関連しています:

  • プロパティStackTrace:文字列 読み取りGetStackTrace;
  • property StackInfo: ポインタ読み取りFStackInfo;
  • class var GetExceptionStackInfoProc:関数(P: PExceptionRecord): ポインタ;
  • class var GetStackInfoStringProc:関数(情報: ポインター):文字列;
  • class var CleanUpStackInfoProc:プロシージャ(情報: ポインタ);

これらを使用してスタック トレースを取得した人はいますか? ええ、スタック トレースを取得する方法が他にもあることは知っていますが、それが Exception クラスでネイティブにサポートされている場合は、むしろそれを活用したいと思います。

更新:これについては、興味深いブログ投稿があります。かなり深くカバーします。

4

4 に答える 4

8

私には、これは独自のスタック トレースをプラグインできるフレームワークのように見えます。これは、JCLDebug を使用して IDE で内部的に使用される可能性があると思います。おそらく、ユーザーが madExcept または別の実装を提供できるようにするためのものです。

于 2008-11-14T13:21:50.407 に答える
2

いいえ、まだ使用していません(現在、そのためにmadExceptを使用しており、JclDebugでいくつかの実験も行いました)-しかし、ヒントに感謝します!

于 2008-11-13T10:27:12.950 に答える
2

MadExcept を参照することをお勧めします。未処理の例外 (画面グラブ、電子メールなど) の優れた処理を提供するだけでなく、ほとんどどこでも使用できるスタック トレースを返す呼び出し可能なルーチンの優れたセットを備えています。ブライ

于 2009-02-13T10:27:24.970 に答える
2

TOndrej は正しいです。Exception クラスに追加された新機能は、サードパーティが独自のスタック トレース コードを RTL にフックするためのものです。Exception クラスのデフォルトの実装は、独自のスタック トレースを生成しません。

于 2009-02-13T02:27:50.020 に答える