最近、アプリケーションを起動すると、Visual Studio 2005の出力ウィンドウに次の行が表示されるようになりました。
FTH:(7156):***現在のプロセスに適用されているフォールトトレラントヒープシム。これは通常、以前のクラッシュが原因です。 ***
次の手順を使用して、フォールトトレラントヒープをオフにしてみました。
http://msdn.Microsoft.com/en-us/library/dd744764(VS.85).aspx
私はWindows 7 64ビット版を実行しているため、32ビットと64ビットの両方のレジストリに変更を加え、32ビットと64ビットの両方を使用して「Rundll32.exe fthsvc.dll、FthSysprepSpecialize」コマンドを実行しています。 Rundll32.exeの64ビットバージョン。
ただし、再起動後もアプリケーションをデバッグしようとすると、フォールトトレラントヒープが引き続き表示されます。
これは、再現しようとしているバグを覆い隠し、パフォーマンスを低下させるため、これは本当の問題です。
フォールトトレラントヒープを無効にする方法を他に提案している人はいますか?
このレジストリ値を0
に設定します:HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled
実行可能ファイルの名前をExclusionListに追加できます。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\FTH\ExclusionList
私のために働く。
アプリケーションマニフェスト を PCAからプログラムを除外する に編集できます。
「Rundll32.exe fthsvc.dll、FthSysprepSpecialize」は、現在フラグが付けられているアプリケーションのリストのみをクリアするように見えます。それでもアプリケーションで奇妙な問題が発生する場合は、FTHが介入して引き継ぐ必要があります。
すでに述べたように:
このレジストリ値を0に設定します:HKEY_LOCAL_MACHINE\Software\Microsoft\FTH\Enabled
これにより、システム全体のFTHが無効になります。
(Microsoft :: VisualStudio :: CppUnitTestFramework)を使用して単体テストを実行すると、同様の問題が発生しました。どういうわけか私はいくつかのヒープ割り当てに違反していて、次にデバッグしようとすると、「現在のプロセスにフォールトトレラントヒープシムが適用されました。これは通常、以前のクラッシュが原因です。」というメッセージが表示され、デバッグ環境がフリーズしました。
再び機能させるには、テストケースを削除し、再コンパイルして再度追加してから再コンパイルする必要があり、ブレークポイントを設定してテストにステップインできました。
これにも遭遇しました。 Windows\AppPatch内のAcXtrnal.dllの名前変更/削除は私にとってはうまくいくようです。このマイクロソフト推奨のアクション(私が最初に実行したもの)が何もしないのが好きです。
このキーに関連付けられているレジストリエントリに該当するデータがないため、ファイルの名前も変更する必要がありました。動作に問題のあるアプリケーションがある場合は、これらが表示されることを期待しています。しかし、私の場合、私はVisual Studio内で自分のアプリケーションをデバッグしていました。したがって、その場合、FTHサービスが実行されているかどうかにかかわらず、FTHを何らかの方法でロードしていたのは私のプロセスでした。実際、以前は誤動作のタグが付けられていたアプリケーションのリストはありませんでした。
しかし、私はこれらの指示に従わなければなりませんでした:
http://billroper.livejournal.com/960825.html
所有権を取得して完全に制御できるようになるまで、ファイルの名前を変更できないからです。
次の手順に従って、このサービスを停止することなく、FTHによって追跡されるアプリケーションのリストをクリアできます。
右クリックして操作可能という名前のファイルを見つけ、ログの消去を選択すると、プログラムを再度実行して警告メッセージが消え、オペレーティングシステムを再起動せずに動作しました。