Mac系统安装GDB以及遇到问题的解决方案解决

参考自:https://sourceware.org/gdb/wiki/PermissionsDarwin

安装过程

1.首先,使用brew search gdb搜索是否已经安装gdb,如果没有,则按照如下步骤进行安装
2.其次执行brew install gdb进行安装(默认是最新版本)
3.安装完毕后使用gdb-v查看是否安装成功:
若安装成功,显示如下图:


图片名称

使用过程中遇到的问题:

1.在运行时(run)发生错误

  • 错误描述
    Unable to find Mach task port for process-id 20050: (os/kern) failure (0x5).
    (please check gdb is codesigned - see taskgated(8))

  • 错误出现原因
    此处错误的原因是Mac系统不允许一个未授权的进程随意访问其它进程,GDB作为一种调试工具,显而易见需要访问所调试程序的进程,因此此处会报错。

  • 解决方法:创建信任证书,步骤如下:
    1.搜索Mac中钥匙串访问,左上角进入创建证书

    图片名称

    2.创建证书,名称随意,身份类型选择自签名,勾选覆盖,一直点击继续直到下一个步骤

    图片名称

    3.选择系统并创建

    图片名称

    4.创建成功,在我的证书中找到自己创建的双击并点击信任选择始终信任

    图片名称

    5.这样一个证书就创建成功,接下来对gdb进行证书认证
    codesign -fs random(即你刚刚创建的证书名称) /usr/local/bin/gdb(此处为你电脑中gdb的位置,可以使用命令which gdb获取)
    echo "set startup-with-shell off" >> ~/.gdbinit

    6.认证成功后重新启动即可以使用gdb进行代码调试

    补充.如果经过上述步骤后任出现上述问题或者出现创建new Thread然后线程卡死的情况,则在步骤4后按照以下步骤进行操作
    首先,创建一个文件 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>
    其次,对证书进行重新认证,在终端执行以下命令
    sudo codesign --entitlements gdb-entitlement.xml -fs gdb-cert $(which gdb)
    codesign -vv $(which gdb)
    codesign -d --entitlements :- $(which gdb)
    最后,重新启动即可

    有任何问题欢迎留言指正

posted @ 2021-04-14 11:26  积跬步至万里  阅读(1178)  评论(0)    收藏  举报
Live2D