23

現在、(Visual Studio 内からではなく) 外部で起動されるプロセスのデバッガーを起動しようとしています。何も起こらないように見えるため、デバッガを実際に起動できないようです。その過程で、次のコードを追加しました。

Debug.Assert(Debugger.IsAttached == false, "Should be no debugger");
if (!Debugger.IsAttached)
{
    Debug.Assert(Debugger.Launch(), "Debugger not launched");
}
Debugger.Break();
Debug.Assert(Debugger.IsAttached == true, "Debugger should be attached");

アサーションは、私が狂っていないことを確認するためにあります。最初は、IsAttachedプロパティは予想どおり false を返します。次にDebugger.Launchを呼び出すと、 trueが返されます。Debugger.Launchの MSDN ドキュメントによると、デバッガーの起動に成功した場合、またはデバッガーが既にアタッチされている場合にのみ true を返すと言われています。添付されていないことを確認したので、起動したに違いありません。

ブレークポイントにヒットすることはなく、2 回目の検証は失敗します ( IsAttachedプロパティは false を返します)。また、 Debugger.Launchの後にスリープ状態にしてしばらく時間を空けようとしましたが、役に立ちませんでした。

助言がありますか?

4

3 に答える 3

25

Visual Studio 2013 Premium でも同じ問題があります。エリック答えは、それを解決する方法を教えてくれました。ただし、レジスターを変更する必要はありません。

  1. [ツール] --> [オプション] --> [デバッグ] に移動します
  2. アイテムを開き、ジャスト イン タイム デバッガーを選択します
  3. ウィンドウの下部に、Visual Studio とは異なる他のデバッグが使用されているという黄色の警告が表示される場合。それが表示された場合は、すべての Just in Time チェックボックスをオンにして、VS に戻ってデバッグ プログラムにします。

それだけです!

オプション ジャスト イン タイム デバッガー

于 2014-10-06T17:42:32.147 に答える
5

おそらく、これは将来誰かを助けるでしょう。Debugger.Launch が何もしていないように見えるという同じ問題がありました。他の誰かが私のマシンにログインしており、私の環境ではなく、その環境でデバッガーのアタッチが起動されたことが判明しました。私はそれらをシステムから追い出し、それで修正されました。

于 2015-07-15T23:16:56.757 に答える
5

質問でVS Expressへの参照が見つからず、VS2013 Proの使用中に同じ問題が発生したため、これは不十分な答えです。

この記事では問題は VS2013 で解決されていると述べていますが、私のように VS2013 を使用している場合でも、そこにリストされている一時的な修正タブを探してください。それを使用して問題を修正しました。詳細はリンク先をご覧ください。

正しい方向に導く別の記事をリンクします。おそらくそれも役立つでしょう。

概要: Visual Studio Just-In-Time Debugger レジストリ キーの AppIDFlags 値を 0x28 から 0x8 (または、上記の記事によると 0x20、試行錯誤によると思います) に変更します。レジストリ キーは HKEY_CLASSES_ROOT\AppID\{E62A7A31-6025- です。 408E-87F6-81AEB0DC9347}

于 2013-12-09T04:31:01.350 に答える