【发布时间】:2020-05-18 16:33:06
【问题描述】:
我编写的一个程序崩溃了,我正在调试它。
但是,问题在于,当我尝试创建新版本时,非常频繁(但并非总是如此!)我收到以下消息:
Cannot open file 'TheExecutable.exe'
在系统重新启动之前,我无法删除、重命名、移动或以任何方式修改可执行文件。尝试在 Windows 资源管理器中这样做会得到
The action can't be completed because the file is open in TheExecutable.exe Close the file and try again.
这种行为不是我现在正在处理的特定崩溃所独有的,也不是特定程序所独有的。开发正变得令人头疼,因为现在每次尝试调试都需要几分钟才能重新启动并恢复我所有的工具。
我可以做些什么来防止 Windows 以这种方式“锁定”可执行文件?
在任务管理器中看不到该可执行文件的运行进程
构建系统的完整细节:
- Windows 10
- 英特尔编译器,19.1.0.166 内部版本 20191121
- nmake
- C++14
【问题讨论】:
-
为什么不使用任务管理器杀死应用程序?听起来程序没有崩溃,但处于某种无限循环/死锁状态。
-
打开任务管理器,看看进程是否还在。有时,段错误会在原处留下僵尸。
-
不幸的是,我已经确认该任务实际上没有在任务管理器中运行,即使我没有附加调试器也会发生这种情况。
-
尝试使用pskill 像
pskill TheExecutable看看是否有帮助。 -
进程不显示在任务管理器中的情况非常罕见。确保您正在查看进程列表(选项卡名为“详细信息”)而不是任务列表(在不准确地命名为“进程”的选项卡上)。并且您选择了“显示所有用户的进程”。然后您可以看到包括关键系统进程在内的所有内容。进程不显示的唯一原因是 rootkit(或者根本不是进程,例如设备驱动程序)。
标签: c++ windows crash delete-file nmake