【问题标题】:Unable to delete EXE after it crashes even though process not shown in Task Manager即使进程未显示在任务管理器中,EXE 崩溃后也无法删除
【发布时间】: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

【问题讨论】:

  • 为什么不使用任务管理器杀死应用程序?听起来程序没有崩溃,但处于某种无限循环/死锁状态。
  • 打开任务管理器,看看进程是否还在。有时,段错误会在原处留下僵尸。
  • 不幸的是,我已经确认该任务实际上没有在任务管理器中运行,即使我没有附加调试器也会发生这种情况。
  • 尝试使用pskillpskill TheExecutable 看看是否有帮助。
  • 进程不显示在任务管理器中的情况非常罕见。确保您正在查看进程列表(选项卡名为“详细信息”)而不是任务列表(在不准确地命名为“进程”的选项卡上)。并且您选择了“显示所有用户的进程”。然后您可以看到包括关键系统进程在内的所有内容。进程不显示的唯一原因是 rootkit(或者根本不是进程,例如设备驱动程序)。

标签: c++ windows crash delete-file nmake


【解决方案1】:

您的进程并未完全终止。由于任务管理器中没有列出,可以使用PSKILL手动结束。

以管理员模式打开power shell或控制台并运行

pskill name_of_executable

它应该终止它,以便您可以重新运行它。

【讨论】:

    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多