1

私は手掛かりを持っていないデルファイでプロジェクトを維持するために与えました:)。D5からXE8にコンバートしました。そのため、多くのカスタムがあります (Dictionaries は D5 に存在しなかったため、いくつかのカスタム Object リストを Dictionaries に置き換えています)。メイン アプリケーションは TForm を拡張しており、FormCreate メソッドには次の行が含まれています

Application.OnException := FormException;
HandleException := Application.HandleException;

このFormExceptionメソッドは例外を受け取り、情報とコール スタックを含む詳細なウィンドウも出力します。

プロジェクトに EurekaLog または madExcept を統合して、未処理の例外に関する詳細情報を見つけたいと考えています。しかし、インストールして有効にしましたが、必要な情報を含むウィンドウが表示されません。これは FromException メソッドを実行しますが、madExcept とリンクするとこれが無視されることを読みました。madExcept または EurekaLog を有効にしてボタン クリックから例外をスローするだけで新しいプロジェクトを作成すると、正常に動作します。Delphi の例外処理をどこで探すべきか、サードパーティ ツールの設定をさらに行う必要があるかどうかがわかりません。何か案は?

4

2 に答える 2

0

私は EurekaLog を使用していますが、例外がキャプチャされないケースがいくつかあります。

たとえば、アプリがマルチスレッド化されていて閉じている場合、スレッドがシャットダウンされ、EL が例外をキャプチャする時間がなくなる可能性があります。

特定の例外を無視するように EL を構成している場合もあります。EL 設定ウィンドウでオプションを確認します。

お使いのアプリの種類 (VCL/FMX/など) に合わせて EL が構成されていることを確認してください。これは、EL オプション ウィンドウの最初のオプションです。

デバッガーが詳細なマップ ファイルを生成することを確認します ([プロジェクト] > [オプション] > [コンパイラ] > [リンク] > [マップ ファイル] --> [詳細])。

最後に考えられるのは、EL が正しくインストールされていないことです。[プロジェクト] > [ソースを表示] に移動します。プロジェクトで EL が有効になっている場合は、System.StartUpCopy の前に多数のユニット (EMemLeak など) を確認できるはずです。

ところで、どのバージョンの EL をお持ちですか?

エルピーゾ・ナ・ボイシサ...

于 2016-03-11T15:06:57.927 に答える