class Program { static void Main() { System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); } }
12
2
_ _ 回答のまとめ
デバッガーがCtrl + Cをトラップしないようにするには、まずVisual Studioホスティングプロセスをオフにします(プロジェクトプロパティの[デバッグ]タブにあります)
ExpressバージョンのVisual Studioを使用している場合は、それがすべて可能です。
Proまたはそれ以上のバージョンのVisual Studioを使用している場合は、[デバッグ]> [例外…]、[Win32例外]を追加で開き、Ctrl + Cのチェックを外すことができます。
別の方法として、デバッグ時にCtrl + Breakを使用できます。ただし、私のようにCtrl + Cが脳に組み込まれている場合を除きます。 _ _
元の
以下が編集されました。 ハンスは答えを撤回したようですが、彼の質問は問題の記述を絞り込むのに役立ちました。
余分な明快さ
Ctrl + Cの動作を変更したくありません。
私は回避策を探していません。
Ctrl + Cが押されたときに、デバッガーが中断しないようにするだけです。 デバッグセッション中。
次の例が工夫されていることに注意してください。 動作を実証するだけです。 ReadKeyの行を変更しました。
次のプログラムをデバッグ(実行)します。
class Program { static void Main() { System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite); } }
Ctrl + Cを押します。 デバッガーは、スリープ行にブレークポイントを設定したかのようにブレークします。
これをどのようにオフにしますか? Ctrl + Cの場合、デバッガーがまったく壊れないようにします。
これは、VS2008 Proでは自宅では発生しません。
VS2008 ExpressとVS2010 Express(簡単にテストできる唯一のエディション)の両方で試してみましたが、それらはすべてそれを行います。 これにより、それがExpressの動作であるか、オン/オフを切り替える設定がどこかにあると信じるようになりました。
どのバージョン/エディションでもこれをオン/オフにする設定はありますか?
この設定はVS2008、VS2010、またはその両方に存在しますか?
Expressエディションで設定が公開されていますか?
VS2008 Proのインスタンスは一意ですか? 設定は何かでしたか 引き継がれた古いバージョンのVisual Studioで公開されました(多くの新しいバージョンでVS設定を引き継ぎました)
5 Answer
11
おそらくこれは今では一般的な知識ですが、Visual Studioでデバッグ中にctrl-cを使用してトップシェルフアプリケーションを停止しようとすると、同じ問題が発生していました。 最後に、スローされたときにcontrol-c win32例外のキャプチャをオフにし(Debug→ Exceptions、またはctrl d、e Win32 Exceptionsを開き、スローされた列のcontrol-cのチェックを外す)、プロジェクトに移動する必要があると考えました(サービスを実行している)プロパティと[デバッグ]タブで、アンマネージコードのデバッグを有効にするオプションをオンにします。 MS Visual Studio 2010 proバージョン10.0.40219.1 SP1Relを使用しています。
4
私は答えを見つけました、それはデバッグの例外オプションです。 初めて見逃した方法はわかりませんが、ここにあります:
デバッグ→例外… Win32例外-Control-C
これはVS2008 Proにあります。
また、オプションがExpressエディションに*存在しない*ことを確認できます(Win32例外ノード全体が欠落しています)。
VS2010 Proを所有していない(まだ?)ため、私が残した唯一の質問は次のとおりです。Win32ExceptionsノードとControl-C例外はVS2010 Proエディションに存在しますか?
4
https://connect.microsoft.com/VisualStudio/feedback/details/524889/debugging-c-console-application-that-handles-console-cancelkeypress-is-broken-in-net-4-0があるようです?wa = wsignin1.0 [VS 2010デバッガー/ .NET 4のバグ]マネージデバッグのみのコンソールアプリケーションでCtrl + Cを押すと、奇妙な「シンボルなし」ウィンドウが表示される。 ミックスモードデバッグを有効にする回避策があります。 バグは「修正済み」と表示されますが、他の人がこれをヒットしている場合は、接続バグについて報告してください。修正が修正プログラム/ SPに反映されます。
TopShelfライブラリを使用してWindowsサービスをホストするサービスをデバッグしているときに、これを確認しました。これにより、サービスをローカルでコンソールアプリケーションとしてデバッグすることもできます。
関連リンク:http://topshelf-project.com/documentation/getting-started/[TopShelf]、(MassTransitからアクセス)
更新:接続バグはVS 2010ベータ版のようですが、VS 2010 RTMを使用したマネージドオンリーデバッグでは、最新の修正プログラムであると思われる奇妙な「ソースがありません」が表示されます。
1
0
CTRL-Cは、「ブレーク」操作のためにコンソールウィンドウ自体に直接接続されています。 新しいコンソールアプリを開き、pingを実行して、すぐにCTRL-Cを押します。 pingを中止します。
VS Proにはこの動作がなかったとおっしゃいました。 VS Expressは設定しないのに対して、それ自体がSetConsoleModeを設定しているだけだと思います。 ただし、CTRL-Cを無視してSetConsoleModeを使用して直接入力として扱うようにコンソールに直接指示することもできます。 詳細はこちらのリンクをご覧ください。
C#の使用例を次に示します。
プログラムの最初に、選択したモードオプションで電話をかけるだけで準備完了です。
お役に立てれば!
M