美文网首页
MacOS Gdb Debug

MacOS Gdb Debug

作者: ieasy_tm | 来源:发表于2018-12-01 00:14 被阅读0次

    最近又开始了我的Go语言开发之路,开发过程中想使用Gdb调试代码,但始终因为各种报错而导致Gdb调试不了,今天晚上乘着吃了一顿烤肉的干劲,决定解决这个问题。遇见的问题主要有两个:

    1.  根证书创建错误。
    2. Gdb跑起来之后,会报:`During startup program terminated with signal SIGTRAP, Trace/breakpoint trap`。
    

    根证书创建错误

    MacOS系统是不容许没有许可证的进程去调试其他进程,所以需要创建一个系统的根证书,创建就创建呗,网上一搜全都是教程,这里就啰嗦了。创建过程中你极大可能会遇见这么一个问题(没遇见算你狠)

    未知错误 -2,147,414,007
    

    这是什么鬼东西,网上一搜也没有人说明这个报错的原因,但针对这个报错,可以这样解决:

    在MacOSX上,lldb需要进行代码签名。调试和发布版本
    使用名为的代码签名证书设置代码签名
    lldb_codesign。
    _
    如果您还没有,则需要:
    -  Launch / Applications / Utilities / Keychain Access.app
    _
    - 在Keychain Access中选择“Keychains”中的“login”钥匙串
    列表在窗口的左上角。
    _
    - 选择以下菜单项:
    _
    钥匙串访问 - >证书助理 - >创建证书......
    _
    - 设置以下设置
    _
    Name = lldb_codesign
    身份类型=自签名根
    证书类型=代码签名
    _
    - 单击继续
    - 单击继续
    - 单击“完成”
    - 点击“我的证书”
    - 双击新的lldb_codesign证书
    - 调低“信任”披露三角形
    _
    更改:
    使用此证书时:始终信任
    _
    - 输入您的登录密码进行确认并使其受信任
    _
    SnowLeopard需要接下来的步骤,但可能是因为一个bug
    Keychain Access如何制作证书。
    _
    - 选项 - 将新的lldb_codesign证书从登录密钥链拖到
    主Keychain Access窗口的Keychains窗格中的System keychain
    在系统钥匙串中制作此证书的副本。你必须这样做
    多次授权,在被问到时将其设置为“始终信任”。
    - 切换到系统钥匙串,然后拖动lldb_codesign的副本
    在那里进入桌面。
    - 切换到终端,然后运行以下命令:
    _
    sudo security add-trust -d -r trustRoot -p basic -p codeSign -k /Library/Keychains/System.keychain~/ Desktop / lldb_codesign.cer
    _
    - 右键单击​​“系统”钥匙串中的“lldb_codesign”证书(不是
    “登录”,但“系统”中的一个,并选择“删除”将其删除
    “系统”钥匙串。
    - 重启
    

    根证书创建完成之后,就可以给gdb授权了,执行命令如下:

    sudo killall taskgated
    sudo codesign -fs gdb_codesign /usr/local/bin/gdb
    

    Gdb调试报错

    准备开始使用了,我靠,发现还是不行,run起来之后,发现报错 During startup program terminated with signal SIGTRAP, Trace/breakpoint trap。主要是因为 gdb8.1 的问题和苹果系统的SIP机制,更换版本为8.0.1就可以解决问题。更换gdb(这个过程最好挂上代理)

    brew unlink gdb
    brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
    brew pin gdb
    

    还需要关闭macOS系统的SIP机制,步骤如下:

    1、重启计算机,按住command+R 直到logo出现进入恢复模式
    2、进入恢复模式之后,左上角选择Utils -> Terminate 
    3、输入 csrutil disable
    4、Restart
    

    重启计算机,gdb应该会正常工作了。记录备忘 ~

    相关文章

      网友评论

          本文标题:MacOS Gdb Debug

          本文链接:https://www.haomeiwen.com/subject/zcekcqtx.html