【Windows】 VisualStudio 2010 でコンソールアプリの実行中断ができない

いやはや、VisualStudioなんて随分ご無沙汰。Visual BasicやらVisual C++やら昔は色々と触ったもんやけどねぇ。[E:coldsweats02]

SystemCを使った回路シミュレーションをやろうとしたら、Windows環境ではVisual C++がサポートされていたみたい。Cygwinでも良いんやけど、この際なんでVisualStudio 2010 Express入れてみました。
SystemCのアプリは大抵コンソールアプリとして作るんやけど、ここで問題が発生。
デバッガでソースコードをトレースしている途中に、バグの原因が分かったのでコード修正するために実行中断をしたわけです。にも関わらず何故かコンソールウィンドウが残ってしまっている。[E:wobbly]
タスクマネージャから強制終了しようと思ったら、なんとプロセスリストにも出てこないのだ。[E:sweat01]

どうしたものかと調べてみた所、これはどうやらマイクロソフトのバグらしい。プロセスの特権が昇格されてしまうとの情報が。そうか、特権レベルで動いてしまうからユーザレベルからプロセスを止められないのか…。

Visual Studio では、Windows XP を実行しているコンピューター上でアプリケーションのデバッグを停止した後、アプリケーションのコンソール ウィンドウを閉じることはできません。

http://support.microsoft.com/kb/982551/

結局、978037のセキュリティ更新プログラムをインストールする事が対策のようです。

無事解決しました。

(2011/01/04追記)

訂正事項です。

完全に誤解を招く書き方をしていましたが、978037のセキュリティ更新プログラムをインストールする事は対策ではなく原因です。で、978037の情報ページに本件の対策パッチがリリースされているので、それを適用する事が解決方法になります。このパッチは正式なバージョンではないためダウンロードにはメールアドレス等の登録が必要です。

発生条件はWindows XP SP2 or SP3で978037のパッチをインストールしている事のようです。逆にこのセキュリティ更新プログラムをアンインストールしても良いのやけどね。

Author: kan
初めてプログラムらしきものを作ったのは幼稚園の時。それから約40年経ち、現在はデジタル回路設計から信号処理、機械学習まで幅広い経験を活かしてシステムアーキテクトとして活動中。超並列処理、デジタル回路とソフトウェアのバランス設計が得意分野。 Linux/Mac/Windows使い。 C/C++を主要言語として、Unity、Qtなどのフレームワーク興味あり。UI/UXデザイン、STL拡張など。 音声処理、画像処理、技術コンサルは仕事でも請け負います。 一般ソフトウェア開発プロセス、医療機器ソフトウェア開発プロセス作成も進行中。