首页 > 解决方案 > Int 3 导致系统中断进程达到 95% CPU 使用率

问题描述

我使用 Toolset 2019 (v142) 开发了一个 Visual C++ 程序,它使用 _asm { int 3 } 块来检测它是否在调试器上下文中运行。

bool CheckDebug()
{
    bool hayDebug = false;

    __try
    {
        _asm
        {
            int 3
        }

        hayDebug = true;
    }
    __except (GetExceptionCode() == EXCEPTION_BREAKPOINT ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
    {
        hayDebug = false;
    }

    return hayDebug;
}

在数百台运行 Windows 10、8.1 和 7 的计算机中,它运行良好,但在几台计算机中,该指令会导致系统中断进程获得 95% 到 100% 的 CPU 使用率,并且程序在没有杀死自己的进程的情况下停止运行。我使用 Process Explorer 进行了检查。如果我删除该指令,该程序在所有计算机上运行良好。¿ 你能告诉我为什么会这样吗?

标签: debuggingvisual-c++interrupt-handling

解决方案


推荐阅读