25

今日の午後、非常に厄介なバグに遭遇しました。私はしばらくの間取り組んでいるコンソールアプリケーションで何気なく働いていましたが、変数をクイックウォッチするとVS2012デバッガーがハングし始めました。15 ~ 20 秒間ハングした後、メッセージが表示されます

前回の関数評価がタイムアウトしたため、関数評価は無効になっています

次に F10 を押すと、デバッガーの接続が解除され、プロセスが続行されます。暗黙的に宣言されているほとんどすべての変数でクラッシュします

この問題を解決するためにこれまでに行った手順を次に示します。

私が取ったステップ:

  • VS を再起動する
  • コンピュータを再起動する
  • すべてのブレークポイントを削除しました
  • ncb と suo ファイルを削除
  • シンボル サーバーが有効になっていません
  • ネットワークの場所は使用されません。ユーザー ファイルはローカル、プロジェクト ファイルはローカルです。
  • マイ コードのみの有効化/無効化
  • Enable .NET Framework source stepping が有効になっていないことを確認
  • プロパティのステップオーバーが有効になっていることを確認
  • [ソース サーバー サポートを有効にする] が有効になっていないことを確認
  • /SafeMode を使用して Visual Studio を起動し、拡張機能を抑制します
  • ウォッチウィンドウをクリアしました(とにかく空でした)
  • ターゲット プラットフォームを x64 および任意の CPU に変更してみました
  • アンチウイルスの無効化
  • Visual Studio のデフォルト設定のリセット (devenv.exe /ResetSettings)
  • VSを再インストール

私がデバッグしているアプリケーション:

  • タイプ : C# コンソール アプリケーション
  • 対象フレームワーク: 3.5
  • プラットフォーム ターゲット: x86

私の健康のために、助けてください。

編集: Visual Studio Update 3、バージョン 11.0.60610.01 があります。

編集:私のコンピューターの仕様

  • Windows 7 アルティメット 64 ビット
  • デル オプティプレックス 960
  • インテル コア i5-2400 3.1 GHz
  • 4GBのRAM

編集: Visual Studio update 3 なしで 2 台のマシン (同じコード) でテストしました。

編集: 次のコード行のみを含む同じ設定で単純化されたコンソール アプリケーションを作成しました。見ているとハングの問題が発生し、その後、接続も解除されます。マシンの何が問題なのですか?

これは、デバッガーをハングアップさせる単純化されたアプリケーションです。

static void Main(string[] args)
 {
   var _AppLocation = System.Reflection.Assembly.GetEntryAssembly().Location;
    _AppLocation = _AppLocation.Substring(0, (_AppLocation.Length -
     (System.Reflection.Assembly.GetEntryAssembly().GetName().Name.Length + 5)));

   var directoryInfo = new DirectoryInfo(_AppLocation);
   Console.ReadyKey(); //I break here, check the directoryinfo
 }

編集 10/3/13: これはまだ解決されておらず、すべて (オフィス、フレームワーク、vs) を完全に再インストールしても問題は解決しませんでした。OS/ハードウェアに関連する vs2012 のバグである必要があります。私は Microsoft でチケットを開き、彼らが何か有用な情報を見つけたら更新します。

EDIT 10/30/13: この問題は、ハードウェア構成が異なる 2 台のマシンで再現されました。問題を見つけるために、私はまだマイクロソフトと連絡を取り合っています。フレームワーク/Windows ビルド/ビジュアル スタジオに関連するもののように見えます。

編集 11/19/13: 私はまだ Microsoft VS エスカレーション チームと連絡を取り合っています。問題のプロセス モニター ログとビジュアル スタジオ クラッシュ ダンプを以下に示します。http://sdrv.ms/1egpX4O

4

11 に答える 11

5

Microsoft VS エスカレーション チームと並行して解決策を見つけました。クラッシュ ダンプとプロセス モニターを分析した後、VS 2012 デバッガー プロセスが Microsoft Root Authority 証明書のストア証明書をチェックしているようです。

どちらのコンピューターも保護されたインターネット環境ではないため、オンラインに接続されたことはありません。したがって、Microsoft CA をダウンロードすることはありませんでした。CA がストアに存在しなかったため、特に 3.5 ターゲット フレームワークでデバッガーがハングしてクラッシュしました。

デバッグ時にこのチェックをバイパスするための Microsoft VS Team からの修正を次に示します (アプリケーション app.config に追加)。

<configuration>
    <runtime>
            <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

問題解決!

于 2013-11-20T15:32:09.817 に答える
1

Visual Studio 2015 (Update 1 および Update 2 を含む) でも同じ問題が発生しました。他の誰かがこの問題を抱えている場合に備えて、私の解決策(MSに提出したもの)を投稿してください。

Visual Studio 2015 Enterprise で QuickWatch を使用しようとすると、開発環境がハングします。何もクリックできず、タスクマネージャーを介してプロセスを強制終了する必要があります。その後ろにモーダルウィンドウが開くようです。

私のコンピューターは HP Spectre で、別のモニターが接続されています。両方のモニターで試しました。

修正は次のとおりでした。

  1. シングルモニターに切り替える
  2. QuickWatch を開きます (開いています)。
  3. 移動します(ウィンドウの位置を保存する必要があります)
  4. 閉じる
  5. セカンドモニターを接続する
  6. クイックウォッチを使用すると、正しく開くようになりました
于 2016-05-20T16:12:53.093 に答える
1

Process Monitor ツールを使用して、調査中に発生したファイル、ネットワーク、レジストリ、およびプロセス操作のログを取得することを検討してください。ログをキャプチャした後、それを見て、考えられる理由を調査することができます。または、ログを送っていただければ、こちらで調査いたします

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

于 2013-11-07T10:58:55.400 に答える
0

私も同じ問題を抱えていました。ハードウェア構成にもっと関係していると思います。最近、Vs 2012 で 4GB RAM から 8GB にアップグレードしましたが、問題を再現できませんでした。以前のハードウェア構成では、一貫してこのエラーが発生していました。

于 2013-10-29T20:17:43.840 に答える
0

この問題は、コードが前のスレッドの実行が終了するのを待っているときに発生し、.suo ファイルを削除してから Visual Studio を再起動しようとするときにも発生します。

于 2013-10-30T09:43:59.567 に答える
0

VS にはいくつかの欠点もあります。たとえば、2 つの VS を同時に開いた場合、コードを書いているときに応答がなく、「自動回復情報を保存しています」と表示されることがあります。

于 2013-10-31T06:08:30.800 に答える
0

UAC(ユーザーアカウント制御)をオンにしてVS2012を実行しているときに同様の問題が発生し、いくつかの拡張機能をインストールすると、VisualStudioは実行中のw3p.exeプロセスにバインドされ、1つのワーカープロセスで期待どおりに動作します。複数のワーカー プロセスの存在を許可すると、Studio はすべての独立したスレッドを追跡できず、破損したメモリとして読み取られるデータをチョークします。

于 2013-09-25T21:00:47.747 に答える
0

私はmsdnについて簡単な調査を行い、これを見つけました : for-all-evaluations-function-evaluation-disabled-because-a-previous

結果を確認するには、次の提案を試してください。

[ツール] | [ツール] をクリックします。オプション.. | デバッグ | 一般、および「プロパティ評価とその他の暗黙的な関数呼び出しを有効にする」オプションのチェックを外します。コードにステップ イン (F11) して、「タイムアウト」の根本原因を見つけます。デバッグを再開します。

関数評価エラーの詳細については、http: //msdn.microsoft.com/en-us/library/ms234762 (VS.80).aspx を参照してください。

また、ブログで関数評価の回避策をさらに入手できます: http://blogs.msdn.com/greggm/archive/2005/11/18/494648.aspx

また、奇妙に聞こえるかもしれませんが、Visual Studio 2012 の最新のアップデートはありますか?

于 2013-09-24T20:27:31.623 に答える
0

私自身、x64ビットを除いて、保存設定にはあなたのものがあります。これは常にプログラミングで頭痛の種でした...私が知る限り、Visual Studioは32ビットであり、確かに理由があります...とにかく、サンプル作業を行ってもハングは発生しませんでした...なぜそれが起こったのか正確にはわかりませんが、 64ビット関連の開発環境だと思います。

于 2013-10-10T14:37:56.543 に答える
0

提供されたコードを試しました。

VS2012 Ultimate は、デバッグ設定とリリース設定で正常に動作します。

2 種類の PC (デスクトップと Surface Pro) でテストしました

また、AnyCPU の代わりに x86 設定を強制しました。

テストアプリケーションの出力は次のとおりです。

http://beehiver.jurion.me/debug%20working.png

すべての VS と .net のすべてのバージョンを完全にアンインストールして再インストールすることをお勧めします。ラップトップに問題があるようです。

于 2013-10-18T06:22:52.917 に答える