【问题标题】:In Mac OS Catalina all current documentation fails for Unable to find Mach task port for process-id, any advice?在 Mac OS Catalina 中,所有当前文档都因无法找到进程 ID 的 Mach 任务端口而失败,有什么建议吗?
【发布时间】:2020-03-21 11:29:04
【问题描述】:

问题的原始形式(本身并不完全是一个问题):无法找到进程 ID 的 Mach 任务端口:(os/kern)失败(0x5)。 (请检查 gdb 是否经过代码签名 - 参见 taskgated(8))

我希望有人能提及他们所拥有的关于获得在没有 sudo 的情况下运行 gdb 的能力的任何信息,但只要运行就可以了。

我已经按照https://github.com/cs01/gdbgui/issues/55 的说明以及我现在可以找到的几乎所有相关的 stackoverflow 和 OSXdaily 提要进行了大约一周的操作。我知道有很多关于这个错误的文档,但到目前为止还没有发布这些输出并且正在运行 Catalina。我在 Mac OSX Catalina 10.15.1 上运行 gdb 8.3,配置为“x86_64-apple-darwin19.0.0”

我在 System 中创建了证书,然后在 Login 中创建了证书,结果没有任何变化。

我在 gdb 和主目录的 .gdbinit 文件中都有 set startup-with-shell off

我最终能够使用 sudo gdb ./a.out 运行 gdb,但当我在 gdb 中使用 r 运行代码时却收到奇怪的消息:

  1. (No debugging symbols found in ./a.out)
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xc03 of process 906]
    [New Thread 0xf03 of process 906]
    During startup program terminated with signal SIGTRAP, Trace/breakpoint trap.```
    
  2. (No debugging symbols found in ./a.out)
    (gdb) b main
    Breakpoint 1 at 0x100000f64
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xd03 of process 768]
    [New Thread 0x1003 of process 768]
    During startup program terminated with signal ?, Unknown signal.```
    
  3. Reading symbols from /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out.dSYM/Contents/Resources/DWARF/a.out...
    (gdb) b main
    Breakpoint 1 at 0x100001753: file SSSv1-1.c, line 99.
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    [New Thread 0xb03 of process 717]```
    
  4. Reading symbols from /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out.dSYM/Contents/Resources/DWARF/a.out...
    (gdb) b main
    Breakpoint 1 at 0x100001753: file SSSv1-1.c, line 99.
    (gdb) r
    Starting program: /Users/zanekarl/Documents/Work-Documents//Programming/-code-snippets/a.out 
    Unable to find Mach task port for process-id 680: (os/kern) failure (0x5).
    (please check gdb is codesigned - see taskgated(8))```
    

【问题讨论】:

  • 当您在等待答案时,您可以在 linux 虚拟机中使用 lldb 或 gdb,Vagrant 非常方便。
  • @NegativeChameleon 谢谢,我会同时看看那些。

标签: c debugging gdb keychain macos-catalina


【解决方案1】:

在我的 MacBook Pro(15 英寸,2016 年)上运行 Catalina 10.15.2 (19C57),启用 sip。

我通过以下方式安装了 gdb 8.3.1:

brew 安装 gdb

然后在我的主文件夹中,我创建了一个 gdb.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>

我在系统钥匙串上创建了 gdb-cert

为了签署 gdb,我启用了 root 帐户,并且作为 root,我使用了以下命令:

codesign --entitlements gdb.xml -fs gdb-cert /usr/local/Cellar/gdb/8.3.1/bin/gdb

现在我可以使用 netbeans 来调试我的 fortran 代码了。

【讨论】:

  • @SecretAgentMan 你能详细说明这是在做什么吗?我认为 Marco Parente 还没有经验发表评论。
  • 我可以确认这个解决方案对我不起作用,但也许还有其他一些您没有提到的设置?这个答案背后的原因是什么?
  • @z.karl 帖子作者 (@MarcoParente) 可以随时edit 提供进一步澄清的答案。
  • 这对我有用。 Macbook Air 2017,Catalina 10.15.5
【解决方案2】:

权利 xml 对我来说是缺失的部分:

  1. 启动 /Applications/Utilities/Keychain Access.app
  2. 钥匙串访问->证书助手->创建证书
    Name = gdb_codesign
    Identity Type = Self Signed Root
    Certificate Type = Code Signing
    
  3. 点击“我的证书”
  4. 双击您的新 gdb_codesign 证书
  5. 拒绝“信任”披露三角形 改变: 使用此证书时:始终信任
  6. 按住 Option 键将新的 gdb_codesign 证书从登录钥匙串拖到系统钥匙串中
  7. 创建协同设计授权 xml: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>
    
  8. 打开终端
    $ codesign --entitlements gdb-entitlement.xml -fs gdb_codesign $(which gdb)
    $ sudo killall taskgated
    

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 2020-04-12
    相关资源
    最近更新 更多