【问题标题】:In which cases does program exit with 0x40010004 code?在哪些情况下程序会以 0x40010004 代码退出?
【发布时间】:2016-09-01 21:57:48
【问题描述】:

我的程序设计为在 Windows 平台上运行。

有时它会因错误而终止。我无法在安装它的每台计算机上调试它;所以我向它添加了向量异常处理程序,它将一些有关异常的信息发送到服务器。有一些0xC0000005 例外;我修复了它,但程序仍然终止(我无法在我的 PC 上重现错误)。

我编写了另一个程序,它等待主进程句柄,并在主进程终止时发送带有进程退出代码的报告。我查看了退出代码,其中大多数是0x40010004DBG_TERMINATE_PROCESS)。我知道当调试器附加到应用程序然后终止它时会出现此退出代码;但我确信没有调试器。

那么...在哪些其他情况下可以使用DBG_TERMINATE_PROCESS 退出代码终止进程?

【问题讨论】:

    标签: windows debugging terminate


    【解决方案1】:

    理论上它可以是任何东西,因为TerminateProcess 有一个退出代码参数。

    实际上,这很可能是由于系统关闭造成的。当 Windows 关闭时,它会尝试优雅地退出正在运行的程序(更多关于 here)。如果他们拒绝退出,他们可能会被系统以退出代码0x40010004 终止。例如,如果您有一个显示模式对话框的 GUI 程序,然后您尝试关闭系统,则会提示您一条消息“xy.exe 正在阻止关闭”。如果单击“强制关闭”,进程将被终止,退出代码为0x40010004

    如果您尝试重现此问题,请注意等待您的应用程序进程 HANDLE 的程序可能会在您的主应用程序之前终止

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      相关资源
      最近更新 更多