0

ジャストインタイム デバッガー ウィンドウが表示されることがよくありますが、ほとんどの場合、メッセージは表示されませんが、例外全体が表示されないことがあります。

例

デバッガーを実行しようとすると、別のデバッガーが既にアタッチされているというエラーが常に発生し、どこにも行きません。ウィンドウはサイズ変更できず、テキストはコピーできません。

私は VS 2010 + C# + Silverlight で開発していますが、VS 経由で実行すると発生します。

洞察はありますか?

4

1 に答える 1

0

既にデバッグ モードになっており、ブラウザのプロセスがコードにアタッチされているため、「別のデバッガが既にアタッチされています」というメッセージが表示されます。

まず、App.xaml でグローバル例外を処理します。

次に、ブラウザで開発者インスペクタを開きます。(ほとんどのブラウザーでは F12) とウォッチ コンソール。

http://msdn.microsoft.com/en-us/library/system.windows.application.unhandledexception(v=vs.95).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3

System.IO の使用; // System.Windows を使用した FileNotFoundException; // アプリケーション、StartupEventArgs、ApplicationUnhandledExceptionEventArgs

 namespace SilverlightApplication
   {
   public partial class App : Application
    {
    public App()
    {
        this.Startup += this.Application_Startup;
        this.UnhandledException += this.Application_UnhandledException;

        InitializeComponent();
    }

    private void Application_Startup(object sender, StartupEventArgs e)
    {
        this.RootVisual = new Page();
    }

    private void Application_UnhandledException(object sender, 
        ApplicationUnhandledExceptionEventArgs e)
    {
        if (e.ExceptionObject is FileNotFoundException)
        {
            // Inform the user

            // Recover from the error
            e.Handled = true;
            return;
        }

        // Exception is unrecoverable so stop the application and allow the 
        // Silverlight plug-in control to detect and process the exception.
    }
}

}

次に、ブラウザで開発者インスペクタを開きます。(ほとんどのブラウザーでは F12) とウォッチ コンソール。メッセージは、xap がホストした index.aspx から送信されます。それに対するsilverlighterror js関数があります。

            function onSilverlightError(sender, args) {
        var appSource = "";
        if (sender != null && sender != 0) {
          appSource = sender.getHost().Source;
        }

        var errorType = args.ErrorType;
        var iErrorCode = args.ErrorCode;

        if (errorType == "ImageError" || errorType == "MediaError") {
          return;
        }

        var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;

        errMsg += "Code: "+ iErrorCode + "    \n";
        errMsg += "Category: " + errorType + "       \n";
        errMsg += "Message: " + args.ErrorMessage + "     \n";

        if (errorType == "ParserError") {
            errMsg += "File: " + args.xamlFile + "     \n";
            errMsg += "Line: " + args.lineNumber + "     \n";
            errMsg += "Position: " + args.charPosition + "     \n";
        }
        else if (errorType == "RuntimeError") {           
            if (args.lineNumber != 0) {
                errMsg += "Line: " + args.lineNumber + "     \n";
                errMsg += "Position: " +  args.charPosition + "     \n";
            }
            errMsg += "MethodName: " + args.methodName + "     \n";
        }

        throw new Error(errMsg);
    }

最後に、Web プロジェクトの設定で (存在する場合) を必ず確認してください。Web セクションには、デバッグ用の Silverlight チェックボックスがあります。添付ファイルをデバッグするためにチェックする必要があります。

もう 1 つの手がかり: VS Ctrl + Alt + E で CLR exceptions を選択すると、起動時にエラーの詳細が表示されます。ただし、エラーが正確に発生する場所で実行してください。エラーではない場合もありますが、デバッガーによってキャッチされます。

希望が役立ちます!

于 2013-02-20T12:52:41.300 に答える