当Visual Studio停止调试时,我真的可以不清理吗?
Can I really not clean up when Visual Studio stops debugging?
我有一个控制台应用程序,它运行一些不稳定的硬件。如果我不好好脱离它,五分钟后窗口就会蓝屏。我可以通过使用SetConsoleCtrlHandler来捕获应用程序关闭的时间。但是当我在visual studio中点击"停止调试"时,它跳过了这个过程,只是残忍地杀死了程序。截至2009年,似乎没有人能解决这个问题。
现在还是这样吗?如果我不小心按错了按钮,我真的要忍受蓝屏吗?
终止进程是该按钮的作用。如果您希望程序优雅地终止,您需要让它运行到完成。您可以使用调试器的"继续"按钮,或者直接脱离该进程,然后以正常方式退出程序。或者,您可以使用调试器做一些事情,使程序退出自己,如设置一个"完成"标志,控制主循环。
你可以考虑把你的程序分成两部分:一个服务处理硬件的特性,并向控制台应用程序提供一个"干净"的接口,另一个控制台应用程序与服务对话,而不是直接与硬件对话。
您的直接问题是TerminateProcess
函数,即使任务管理器也可以执行,这使您无法求助于关闭干净。即使你可以解决Visual Studio的问题,别人可以右键点击"结束进程",你也会在同一条船上。
你的根本问题是写得不好的设备驱动程序。这些驱动程序不应该蓝屏,即使你突然终止。如果您别无选择,只能使用它们,那么您可以尝试通过使用管理权限运行、作为服务运行或将操作限制在短窗口时间内来保护您的进程。或者你可以简单地训练你的操作人员不要做那些会导致你脆弱的系统爆炸的事情。和希望。
相关文章:
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- std::string 的对象真的可以移动吗?
- 在这种情况下,我真的复制了字节还是复制了字符?
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 访问我以前可以访问的功能时出现分段错误
- 我是否可以使用 win32 句柄以编程方式记录发送到/接收到 USB/COM 的内容
- 定义 uint= "unsigned int" 没有像我在 Visual Studio 中使用 nvcc 时预期的那样应用
- 我想知道我是否可以将一个类分配给特定的成员数据并创建该类的实例
- 即使在超出范围之后,我是否可以保留矢量数据
- 我想使用 "cout" 命令慢慢打印文本,但我真的找不到任何解决方案
- 我有点问题,我似乎可以理解这个错误
- 我真的可以使用 Type 的每个声明创建一个全局变量吗?
- 我真的必须链接Ws2_32.lib吗?
- 给定这两种类型,我是否可以确定虚拟函数是否已被覆盖?
- 我是否可以拥有大小大于大小限制 (2^32) 的特征::VectorXd
- (C++)控制台窗口保持立即关闭,即使我在Visual Studio中是CTRL + F5
- 您能帮我在Android Studio中解决这个错误吗?
- 简而言之,我真的很纠结语法,有人可以帮助我解决这个问题
- 当Visual Studio停止调试时,我真的可以不清理吗?