【问题标题】:General Protection Fault一般性保护错误
【发布时间】:2010-05-11 16:31:29
【问题描述】:

如何检测导致 GPF 的进程?

【问题讨论】:

  • 你在跑什么? Win2k 之前的 Windows?
  • 我正在尝试在Windows XP中运行一个exe,导致CPU使用率很高,想知道它是否会导致GPF。
  • GPF 是一种来自 16 位 Windows 的旧术语。它往往不会在 Win32 上使用,访问冲突等术语的含义相同。使用大量 CPU 时间的进程显然也没有崩溃。我不清楚你在这里问什么。

标签: windows bsod


【解决方案1】:

我不确定我是否理解您的问题。 GPF - 是处理器发出中断的情况。

如果这种情况发生在用户模式 ​​- 它会被转换为 SEH 异常,进而可能由进程处理。如果不处理 - 过程“崩溃”。意味着 - 显示一个丑陋的消息框并终止进程(取决于设置,进程还可能被调试、生成调试转储等)

如果这发生在内核模式 - 有两种可能性。如果这发生在允许异常的上下文中 - 引发并处理 SEH 异常(类似于用户模式)。但是,如果未处理异常,或者 GPF 发生的上下文不允许异常 - 操作系统将关闭,并显示所谓的 BSOD(蓝屏死机)。

现在关于你的问题,我看到了几种可能性:

  • 操作系统死机了,您想知道哪个进程进行了系统调用,导致内核模式下的 GPF。 这可以通过附加的内核调试器发现。您还会看到导致错误的驱动程序。
  • GPF 发生在进程内的用户模式下,并且未得到处理。 这个进程会崩溃,你肯定知道是哪个进程。
  • GPS 发生在进程内部,经过处理,进程继续运行。并且您希望收到有关此信息的通知。 为此,您可以使用调试器附加到进程。每当进程内发生 SEH 异常时,操作系统都会通知调试器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-14
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 2021-04-14
    相关资源
    最近更新 更多