解决Mac下check gdb is codesigned – see taskgated(8)问题

刚刚安装的GDB调试的时候会报

Starting program: /Users/wangxinguo/C/DataStruct/3/a.out
Unable to find Mach task port for process-id 5222: (os/kern) failure (0x5).
 (please check gdb is codesigned - see taskgated(8))

这是因为没有特殊授权的情况下不允许gdb调试任何程序,所以可以按照如下过程解决

增加自签名证书信任

1、找到”钥匙串访问“

  • 通过Launchpad中的搜索搜到
  • /Applications/Utilities/Keychain Access.app 直接打开

2、创建自签名证书

  • 左上角苹果图标旁边的菜单,钥匙串访问->证书助理->创建证书…
  • 创建第一项:名称:gdb_codesign、身份类型:自签名根证书、证书类型:代码签名,勾选覆盖这些默认值,继续
  • 创建第二项:序号默认、天数:可以多设,继续
  • 创建第三项:个人信息正常填就行,继续
  • 创建第四项:密钥对信息,默认即可,继续
  • 创建第五项:密钥使用扩展,默认即可,继续
  • 创建第六项:已扩展使用的证书,默认即可,继续
  • 创建第七项:基本约束扩展,默认即可,继续
  • 创建第八项:主题备用名称扩展,默认即可,继续
  • 创建第九项:证书位置,选择系统,创建

3、选择信任
右键显示简介,选择信任

4、授予证书,重启

给gdb授予了系统信任的代码签名证书。

codesign -s gdb_codesign `which gdb`

重启taskgated服务或者重启系统

sudo killall taskgated

sudo执行gdb

另一种方案是直接root用户执行

0条留言