none
Exception.StackTrace の内容に関する質問 RRS feed

  • 質問

  • みなさん、こんにちは

    プログラムに例外を発生したら、キャッチできるように、App.xamlに

    「DispatcherUnhandledException」を設定しておきました。

    中に下記のように定義しておきました。

            void AppDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
            {
                logger.Error(e.Exception.Message);
                if (e.Exception.InnerException != null)
                    logger.Error(e.Exception.InnerException.ToString());           
                logger.Error(e.Exception.StackTrace);
               e.Handled = true;

                /* 起動を中止してプログラムを終了 */
                App.Current.Shutdown();
            }

    ローカルのパソコンで問題ないですが、リリースしてから、ほかのパソコンにコピーし、動いてみたら、

    おかしい現象が起きました。

    具体的には e.Exception.StackTrace の中身に「場所」という内容が正しくありません。

    アプリの置く場所にかかわらず、全部コンパイル(リリース時点)時のパスになっています!!!

    普通はアプリ所在のパスではありませんか?

    よくわかりませんので、ご教授のほどをお願いいたします。

    2016年3月19日 7:10

回答

  • こんにちは。 場所はpdbファイルに含まれる情報です。 pdbファイルを配信しているのであれば正しい動作です。 配信時にはソースはリリースしないですよね。 以下を参考にしてください。 https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/00a591eb-231d-47eb-885f-d90e8223a212?forum=vsgeneralja
    2016年3月19日 7:57
    モデレータ

すべての返信

  • こんにちは。 場所はpdbファイルに含まれる情報です。 pdbファイルを配信しているのであれば正しい動作です。 配信時にはソースはリリースしないですよね。 以下を参考にしてください。 https://social.msdn.microsoft.com/Forums/vstudio/ja-JP/00a591eb-231d-47eb-885f-d90e8223a212?forum=vsgeneralja
    2016年3月19日 7:57
    モデレータ
  • ご回答いただき、ありがとうございます。

    まさに、おっしゃる通りです。pdbファイルを消したら、なくなりました。

    助かりました。

    2016年3月19日 8:41