解决GDB在Mac下不能调试的问题

1,446 阅读5分钟
原文链接: segmentfault.com
macos - 解决GDB在Mac下不能调试的问题 - SegmentFault

首页问答头条 专栏讲堂 更多

SegmentFault

搜索 热门标签 全部 javascriptphppython javamysqlios androidnode.js html5 linuxc++css3 git golang ruby vimdockermongodb

在 SegmentFault,学习技能、解决问题

每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

免费注册 立即登录

解决GDB在Mac下不能调试的问题

joywek 2015年12月12日提问
  • 关注 2 关注
  • 收藏 3 收藏,5.5k 浏览
问题对人有帮助,内容完整,我也想知道答案 2 问题没有实际价值,缺少关键内容,没有改进余地

在初次使用 gdb 时,可能会遇到这样的错误:

(gdb) run
Starting program: /usr/local/bin/fabnacci
Unable to find Mach task port for process-id 23330: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

这是因为 Darwin 内核在你没有特殊权限的情况下,不允许调试其它进程。调试某个进程,意味着你对这个进程有完全的控制权限,所以为了防止被恶意利用,它是默认禁止的。允许 gdb 控制其它进程最好的方法就是用系统信任的证书对它进行签名。

创建证书

按入下步骤创建代码签名的证书:

  1. 打开 Keychain Access 应用程序(/Applications/Utilities/Keychain Access.app)

  2. 执行菜单 钥匙串访问 -> 证书助理 -> 创建证书

  3. 填写如下信息:

    • 名称:gdb_codesign

    • 身份类型:自签名根证书

    • 证书类型:代码签名

    • 钩选:让我覆盖这些默认设置

  4. 一路确定,直到指定证书位置的步骤,选择系统

  5. 点击“创建”,会提示用输入系统登录密码,创建完成

  6. 钥匙串访问程序中,选择左侧栏的系统我的证书,找到你刚刚创建的gdb_codesign证书并双击打开证书信息窗口,展开信任项,设置使用此证书时:始终信任

  7. 关闭证书信息窗口,系统会再次要求输入系统登录密码。

对 gdb 签名

执行下面的命令:

codesign -s gdb_codesign gdb

执行上面的命令时,系统会再次验证身份。完成后一定要重启系统,这个很重要,否则签名不会生效。

如果出现下面的错误:

MacBook:~ sam$ codesign -s gdb_codesign gdbgdb: No such file or directory

那么就指定 gdb 的全路径。

最新文章请访问:joywek.com

提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表
同时,被你 @ 的用户也会收到通知 默认排序 时间排序

1个回答

1 个回答被忽略 答案对人有帮助,有参考价值 0 答案没帮助,是错误的答案,答非所问

赞?
赞?
赞?
赞?
赞?
赞?

该答案已被忽略,原因:无意义的内容,赞、顶、同问等毫无意义的内容

振翅飞翔57 声望 提交评论 × 评论支持部分 Markdown 语法:**bold**_italic_[link](http://example.com)> 引用`code`- 列表
同时,被你 @ 的用户也会收到通知

撰写答案

同步到新浪微博 [舍弃] 提交回答

讲堂推荐 更多

相似问题

×Close

分享

分享到微博?

取消 分享 ×Close

关闭问题(请谨慎操作)

删除问题(请谨慎操作)

删除回答(请谨慎操作)

忽略回答

关闭理由: 删除理由: 忽略理由:

推广(招聘、广告、SEO 等)方面的内容 与已有问题重复(请编辑该提问指向已有相同问题) 答非所问,不符合答题要求 宜作评论而非答案 带有人身攻击、辱骂、仇恨等违反条款的内容 无法获得确切结果的问题 非开发直接相关的问题 非技术提问的讨论型问题 其他原因(请补充说明)

补充说明:

取消 提交 × Close

我要该,理由是:

    返回重选 取消 提交

    在 SegmentFault,学习技能、解决问题

    每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

    免费注册 立即登录
    产品
    热门问答
    热门专栏
    热门讲堂
    最新活动
    技术圈
    找工作
    移动客户端
    资源
    每周精选
    用户排行榜
    徽章
    帮助中心
    声望与权限
    社区服务中心
    开发手册
    商务
    人才服务
    企业培训
    活动策划
    广告投放
    合作联系
    关于
    关于我们
    加入我们
    联系我们
    关注
    产品技术日志
    社区运营日志
    市场运营日志
    团队日志
    社区访谈
    条款
    服务条款
    内容许可

    扫一扫下载 App

    Copyright © 2011-2018 SegmentFault. 当前呈现版本 17.06.16
    浙ICP备 15005796号-2   浙公网安备 33010602002000号 杭州堆栈科技有限公司版权所有

    CDN 存储服务由 又拍云 赞助提供

    移动版 桌面版

    回顶部

    记笔记

    标题 纯文本 Markdown Javascript CSS HTML PHP Python Ruby Go C/C++ Java Shell/Bash 空格缩进 Tabs 缩进 2 4 自动换行 不换行
    xxxxxxxxxx
    已保存 [舍弃] 保存私密笔记 保存公开笔记