2

構築されたコンピューターで正常に動作するF#3.0アプリケーションがあります。アプリケーション、FSharp.Core.dll、および.netv4.0がインストールされているWindowsServer2003マシンに関連すると思われるその他のdllをコピーしました。

アプリケーションは正しく起動しますが、その後すぐにクラッシュします。メッセージは次のとおりです。「app.exeで問題のないMicrosoft.NETFramework例外が発生しました[毎回異なる番号]。ジャストインタイムデバッグは次のエラーで失敗しました:インストールされているデバッガーにジャストインタイムデバッグがありません有効(....)」

FSharp.Core.dllを削除しても、メッセージは同じです。その場合、アプリケーションは最初のメッセージまで到達しません。これにより、他のdllが見つからないことが原因である可能性があります。

Dependency Walkerを試しましたが、Fsharp.Coreについても言及されていないようです。Googleが問題ではないと提案しているいくつかのdllが欠落していることについては不平を言います(たとえば、名前にshim / device managerが含まれているもの)。また、Fuslogvw.exeを起動しようとしましたが、出力をまったく記録せずにそのまま表示されます。ターゲットコンピューターにMSVCをインストールできません。

何を試してみるべきかについての提案に最も感謝します。どうもありがとう。

編集:.netリフレクターは明らかに間違っていることも報告しません...。

4

2 に答える 2

3

エントリポイントの最初にあるAppDomain.UnhandledExceptionイベントにアタッチしてみてください。つまり、AppDomain.CurrentDomain.UnhandledException.Add(fun e -> ... log error ...)アプリケーションがアンロードされる前に、エラーが何であるかをキャプチャしようとします。

アプリケーションがWindowsアプリケーションの場合は、Application.UnhandledExceptionにハンドラーをアタッチして同じことを試みることもできます。

もう1つのオプションは、再配布可能なリモートデバッグをターゲットマシンにコピーし、ソースが存在する場所からターゲットマシンに接続することです。これにより、クラッシュが実際に発生するコード内のポイントにステップインできます。

アプリケーションがマルチドメインホストである場合は、リモートデバッガーが最善の策かもしれません。

于 2012-10-05T16:41:55.430 に答える