4

I'm trying to debug an issue on a clients machine. The problem is that the problem is a runtime error with very little clue as to where it is. It is an intermittent problem. I know ADL allows me to run the application in a debug mode. The problem is that to tell the user to download and manage the ADL invokation is going to be very difficult. It would be a lot easier if I could just give the end user one install/executable to install and run and then send me the trace of the issue. So what I'm looking for is easy steps for the client to be able to run the AIR app in debug mode. Downloading ADL and finding the install location of the app is going to be difficult to manage remotely with the end user.

更新:AIR3.5およびFlash11.5を使用していることを確認し、追加のコンパイラ設定に次のフラグ「-swf-version=18」を含める必要があります。次に、回答に記載されているようにグローバルエラーをキャッチする必要があり、エラーの場所が表示されます。もちろん行番号はありません。ただのルーチン名。素晴らしい答えをくれたリーにミリオンに感謝します。

4

3 に答える 3

6

直接的な回答ではありませんが、AIR3.5 (または 3.6 ベータ版) 用に公開すると、デバッグ情報を取得できます。

キャッチされていない RTE のリスナーをアプリの最上位に追加します。

this.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, globalErrorHandler);

リスナーのエラーからデバッグ情報を取得します。

function globalErrorHandler(event:UncaughtErrorEvent):void
{
    var message:String;
    //check for runtime error
    if (event.error is Error)
        message = (event.error as Error).getStackTrace();
    //handle other errors
    else if (event.error is ErrorEvent)
        message = (event.error as ErrorEvent).text;
    else
        message = event.error.toString();
    //do something with message (eg display it in textfield)
    myTextfield.text = message;
}

getStackTrace は、リリース AIR アプリでもスタック トレースを返します (AIR3.5 以降を使用している場合)。

于 2012-12-22T04:17:23.710 に答える
1

SDK ツールなし。aIR アプリをデバッグ モードで実行することはできないと思います。ただし、考慮すべきいくつかの代替手段があります。

  • クライアントは、何が原因でエラーが発生するのかを知っている必要がありますよね? エラーをコード行に切り分けるのに役立つ警告ボックスやログなどを備えた特別なビルドを提供できますか?
  • uncaughtExceptionイベントをリッスンできますか? このイベントは、完全なスタック トレース ( Error.getStackTrace() ) を提供します。その後、ログに記録できます-おそらく他の情報と一緒に。次に、クライアントに「ここに移動して」「このファイルを送って」と伝えるだけです。または、アラートに情報を表示し、ユーザーにそれをコピーしてメールに貼り付けてもらうこともできます。uncaughtException の詳細については、 こちらこちらをご覧ください
于 2012-12-22T04:07:02.453 に答える