1、安装gdb
#brew install gdb
2、gdb调试程序回报错
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))
2.1、创建证书
command+空格键,输入钥匙串访问。
菜单上点击钥匙串访问->证书助理->创建证书
填写如下信息
名称:gdb_codesign
身份类型:自签名根证书
证书类型:代码签名
勾选:让我覆盖这些默认设置
之后一直next,直到出现“指定证书位置”,选择系统,然后完成。
之后在左侧边栏上边选择“系统”,下边选择“我的证书”可以看到创建的证书,然后双击。展开“信任”这一项,选择“始终信任”。
关掉窗口,此时需要验证密码。
如果在最后一步选择了“系统”。
如果提示“未知错误=-2xxxxxxxx”
解决办法:先以登录的方式创建证书。然后在登录栏中找到,拖到桌面上,然后再拖回系统栏中(导入导出也可以,需要cer文件即可)。
2.2、对gdb签名
创建gdb-entitlement.xml 授权文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.debugger</key>
<true/>
</dict>
</plist>
执行命令
#codesign --entitlements gdb-entitlement.xml -fs gdb-cert /usr/loacl/bin/gdb
2.3、重新调试,提示错误
Because `startup-with-shell' is enabled, gdb has worked around this by
#set startup-with-shell off
启动生效解决办法:
关于.gdbinit,就是在你每次用gdb调整程序的时候,如果程序文件中有.gdbinit,就会自动读取里面的命令,全部执行一遍。
于是乎,我们只要用vim在程序文件里面创建一个.gdbinit,并在里面写上set startyup-with-shell off
2.4重新调试
#gdb <程序名称>