You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows10环境下GDB执行info registers后自动终止问题

问题根因

该问题是Windows平台GDB的已知缺陷,主要出现在MinGW/MinGW-w64分发的旧版本GDB中:当执行info registers全量读取寄存器时,GDB会尝试读取AVX-512、系统特权寄存器等Windows用户态调试接口未开放访问权限的寄存器,旧版本GDB未对读取失败的异常做容错处理,会直接触发自身崩溃退出。而指定单个寄存器查询时,不会触发对无权限寄存器的扫描,因此可以正常执行。

解决方案
  • 升级GDB版本:优先使用MSYS2软件源中的最新gdb包,或者MinGW-w64官方构建的最新版本GDB,新版本已针对该问题做了容错处理,读取失败的寄存器会自动跳过,不会触发崩溃。
  • 临时规避全量查询:如果暂时无法升级GDB,可通过指定所有需要的通用寄存器名称的方式批量查询,例如32位程序执行:
    info registers eax ebx ecx edx esi edi ebp eip eflags esp
    
    64位程序对应替换为rax、rbx等64位寄存器名即可。
  • 自定义编译GDB:如果是自行编译GDB使用,可在编译配置阶段添加--disable-avx512参数,关闭对AVX-512寄存器的读取逻辑,即可避免触发权限问题。
  • 排查目标程序:确认你调试的exe未添加反调试、加壳逻辑,部分带防护的程序会主动触发异常导致调试器崩溃,可使用未加壳的简单测试程序复现验证是否属于GDB本身的问题。

内容的提问来源于stack exchange,提问作者User9728

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:15:03