当Visual Studio停止调试时,我真的不能清理吗?

时间:2011-05-06 03:19:02

标签: c++ windows visual-studio visual-studio-2008

我有一个运行一些气质硬件的控制台应用程序。如果我不能很好地脱离它,窗户往往会在五分钟后出现蓝屏。我可以通过使用SetConsoleCtrlHandler来关闭应用程序。但是当我在visual studio中点击“停止调试”时,它会跳过这个过程,并且会残酷地杀死程序。自2009年起,nobody显示solution problem。{/}

这仍然是这样吗?如果我不小心碰到了错误的按钮,我真的不得不忍受蓝屏吗?

2 个答案:

答案 0 :(得分:3)

杀死该进程就是该按钮 for。如果您希望程序正常终止,则需要让它运行完成。您可以使用调试器的“继续”按钮,或者只是从进程中分离,然后以正常方式退出程序。或者你可以使用调试器做一些使程序自行退出的事情,比如设置一个控制主循环的“完成”标志。

您可能会考虑将程序拆分为两部分:一个处理硬件特性的服务,并为控制台应用程序提供一个“干净”的界面,以及一个与服务对话而不是直接与硬件对话的控制台应用程序。 / p>

答案 1 :(得分:0)

即时问题是TerminateProcess函数,甚至任务管理器都可以执行,这使您无法干净地使用关闭。即使您可以解决Visual Studio问题,也可以通过右键单击“结束进程”并与您进行相同的操作。

您的根本问题是编写得不好的设备驱动程序。即使您突然终止,这些驱动程序也不应该是蓝屏。如果您可以选择使用它们,那么您可以尝试通过以管理权限运行,作为服务运行或将操作限制在短时间窗口来防止您的进程。或者你可以简单地训练你的操作员不要做那些会导致你的精密系统爆炸的事情。希望。