You need to enable JavaScript to run this app. 如何在Eclipse CDT中配置调试器?Mac下GDB断点失效及报错求助
优惠活动
大模型
产品
解决方案
定价
更多

如何在Eclipse CDT中配置调试器?Mac下GDB断点失效及报错求助

Mac 平台 Eclipse C 开发GDB调试异常解决方案

故障根因

你遇到的../../gdb/thread.c:95: internal-error: struct thread_info *inferior_thread(): Assertion 'current_thread_ != nullptr' failed报错,是macOS权限管控下GDB 10.1的典型问题——Homebrew安装的GDB没有获得系统级的任务端口控制权限,根本无法接管被调试的C程序进程,既会触发GDB内部的空指针断言,也会导致所有断点失效、程序直接跑完不暂停。你当前使用的macOS 11.1、GDB 10.1、Eclipse 4.18.0组合下,90%的同类问题都是未完成GDB代码签名授权导致的。

解决操作步骤

  • 完成GDB代码签名(核心必做步骤)
    1. 打开系统自带的「钥匙串访问」应用,从顶部菜单栏进入「证书助手 > 创建证书」
    2. 自定义证书名称(比如记为gdb-cert),身份类型选「代码签名」,证书类型选「外部实体」,走完创建流程后,在系统钥匙串中找到刚生成的证书,右键打开简介面板,在「信任」栏的代码签名选项中设置为「始终信任」
    3. 打开终端执行签名命令:codesign --force --deep -s gdb-cert $(which gdb),将命令中的证书名替换为你实际创建的证书名称
    4. 完全退出并重启Eclipse,让系统权限配置生效
  • 修正Eclipse端调试与编译配置
    1. 打开Eclipse偏好设置,进入C/C++ > Debug > GDB页面,确认GDB可执行文件路径指向完成签名的Homebrew GDB路径(Intel芯片Mac一般为/usr/local/bin/gdb,Apple Silicon芯片为/opt/homebrew/bin/gdb),避免调用系统自带的旧版GDB
    2. 打开对应C项目的调试配置页面,切换到「调试器」标签页:
      • 给GDB启动命令追加参数-nx,避免加载Homebrew默认的.gdbinit配置和Eclipse的调试逻辑冲突
      • 取消勾选「启动时自动加载用户GDB初始化文件」选项
    3. 进入项目编译设置,确认编译参数包含-g调试符号,且没有开启-s(剥离符号表)、strip等会删除调试信息的选项
  • 功能验证
    清理项目全量重编译后,在代码可执行行打断点启动调试,若弹出系统权限请求弹窗,需要允许GDB获得控制其他进程的权限,断点即可正常触发暂停。

补充排查提示:如果完成配置后仍报错,可以在终端执行gdb --version核对版本,确保Eclipse调用的GDB路径和终端输出的版本完全一致,避免多版本GDB路径混淆导致的权限失效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 12:24:04