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

Can I really not clean up when Visual Studio stops debugging?

本文关键字:我真的可以 Studio Visual 调试      更新时间:2023-10-16

我有一个控制台应用程序,它运行一些不稳定的硬件。如果我不好好脱离它,五分钟后窗口就会蓝屏。我可以通过使用SetConsoleCtrlHandler来捕获应用程序关闭的时间。但是当我在visual studio中点击"停止调试"时,它跳过了这个过程,只是残忍地杀死了程序。截至2009年,似乎没有人能解决这个问题。

现在还是这样吗?如果我不小心按错了按钮,我真的要忍受蓝屏吗?

终止进程是该按钮的作用。如果您希望程序优雅地终止,您需要让它运行到完成。您可以使用调试器的"继续"按钮,或者直接脱离该进程,然后以正常方式退出程序。或者,您可以使用调试器做一些事情,使程序退出自己,如设置一个"完成"标志,控制主循环。

你可以考虑把你的程序分成两部分:一个服务处理硬件的特性,并向控制台应用程序提供一个"干净"的接口,另一个控制台应用程序与服务对话,而不是直接与硬件对话。

您的直接问题是TerminateProcess函数,即使任务管理器也可以执行,这使您无法求助于关闭干净。即使你可以解决Visual Studio的问题,别人可以右键点击"结束进程",你也会在同一条船上。

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