如何在OSX 10.11 El Capitan下使用macport使gdb工作?

时间:2015-10-23 09:23:24

标签: macos gdb macports

这来自How to install gdb (debugger) in Mac OSX El Capitan?

我在el capitan下工作的macport没有问题,并且安装了gdb端口,但是我无法使代码签名工作。这一切似乎都有效。证书在那里并且设置了“始终信任”。二进制文件显示:

 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim A(1) As Char
        A(0) = " "
        A(1) = ","
        Dim B As String = RichTextBox1.Text
        Dim x As String() = Nothing
        Dim F As Array = {"SMUGGLING", "CROSSING", "INFILTRATION"}
        x = B.Split(A)

        For Each F In x
            Label1.Text += F.Contains(x) & ControlChars.NewLine
        Next


    End Sub

但我得到

$ codesign -d -v -v /opt/local/bin/ggdb 
Executable=/opt/local/bin/ggdb
Identifier=org.gnu.gdb
Format=Mach-O thin (x86_64)
CodeDirectory v=20100 size=25320 flags=0x0(none) hashes=1261+2 location=embedded
Signature size=1392
Authority=gdb-cert
Signed Time=23 Oct 2015, 07:56:53
Info.plist entries=4
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=88

当我尝试开始调试时。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

我刚刚使用以下命令解决了这个问题。

sudo dseditgroup -o edit -a yourusername -t user procmod

将您添加到群组procmod

这只是因为只有procmod中的用户才能使用task_for_pid功能,您可以发现自己的/opt/local/bin/ggdb组是procmod

答案 1 :(得分:1)

我在较旧的iMac(10.11.6 El Capitan)上安装了MacPorts gcc9(gcc-9.2.0),最近需要安装gdb端口(gdb-9.1.0);可预测地遇到相同的代码签名/权限问题。

github上有一系列对我来说非常有效的指令,只需将/usr/local/bin/gdb替换为/opt/local/bin/ggdb。由于github上的此类代码片段可能只是短暂的,因此我将其粘贴在此处:

  1. 打开钥匙串访问
  2. 在菜单中,打开钥匙串访问>证书助手>创建证书
  3. 给它起个名字(例如gdbc
    • 身份类型:自签名根
    • 证书类型:代码签名
    • 检查:让我覆盖默认设置
  4. 继续,直到提示您输入:“指定位置...”
  5. 将钥匙串位置设置为系统
  6. 创建证书并关闭助手。
  7. 在“系统钥匙串”中找到证书,右键单击它>获取信息(或双击它)
  8. 展开信任,将代码签名设置为always trust
  9. 重新启动终端机中的任务:killall taskgated
  10. 启用root帐户:
    1. 打开系统偏好设置
    2. 转到用户和组>解锁
    3. 登录选项>“加入”(网络帐户服务器旁边)
    4. 点击“打开目录实用程序”
    5. 转到编辑>启用root用户
  11. 在终端中运行codesign -fs gdbc /usr/local/bin/gdb:要求输入root密码
  12. 禁用root帐户(请参阅#10)

完成!