【问题标题】:macOS 10.15 Catalina gdb problem for C++ Debugging in EclipseEclipse 中 C++ 调试的 macOS 10.15 Catalina gdb 问题
【发布时间】:2020-06-19 03:02:06
【问题描述】:

我正在使用 macOS 10.15.2 Catalina 并尝试在 Eclipse 中调试 Hello World C++ 程序。 我已经设置了 gdb 调试器,方法是从 Homebrew 安装它并按照以下链接中的过程签署证书。

https://www.thomasvitale.com/how-to-setup-gdb-and-eclipse-to-debug-c-files-on-macos-sierra/

调试器无法启动。

我已经在 Eclipse 中设置了 gdb 设置,如下面的屏幕截图中所述。

当我调试项目时,我收到错误:Configuring GDB Aborting configuring GDB(下面还提供了它的屏幕截图)。

【问题讨论】:

  • 如果我没记错的话,gdb 已经好几年没有工作了。使用 lldb 或尝试获取 gdb 7。
  • 我也试过 gdb 7 但它也有同样的问题。另外,不幸的是,我无法使用 lldb。我会用lldb再试一次。非常感谢。

标签: c++ eclipse debugging gdb macos-catalina


【解决方案1】:

您使用的是哪个版本的 gdb 和 Eclipse?

我将尝试提及我过去遇到问题的一些方面。

  1. 如果您使用 Homebrew 安装 gdb,请尝试将“GDB 调试器”字段设置为实际路径,例如 /usr/local/Cellar/gdb/8.3/bin/gdb 而不是链接 /usr/local/bin/gdb

  2. 您的 .gdbinit 文件位于何处?在本教程中,它位于用户主文件夹中,因此在 Eclipse 调试配置中,GDB 命令文件设置为~/.gdbinit。您的屏幕截图中的值未指定绝对路径,它可能在错误的位置查找它。

  3. 您的 gdb 证书是系统钥匙串(而不是登录钥匙串)的一部分吗?在签名期间,您是否将权利文件作为参数传递?

【讨论】:

  • 非常感谢。它解决了我的问题。我将路径更改为您提到的路径,提供.gdbinit 的绝对路径,并将权利文件作为参数传递。为了传递权利文件,我按照@JuanPabloLeon 提到的程序,并按照他的说明添加了 .gdbinit 中的内容。现在我可以在我的 Eclipse 中进行调试了。非常感谢。
  • @ThomasVitale 我按照您的所有指示进行操作,但不幸的是,当我按调试时它没有启动。我与您的教程的唯一区别是 gdb 版本是10.1。这可能是问题吗?如何安装你的 8.3 版本?
【解决方案2】:

我遇到了类似的问题,我必须执行两个步骤来解决它。我不确定它们是否都需要:

  1. 确保您的调试配置具有 .gdbinit 的绝对路径。您的用户文件夹中需要有一个 .gdbinit 文件,其内容如下:
set startup-with-shell off

我在 Eclipse 中的调试配置指向了这个文件,但直到我将路径更改为绝对路径后它才读取它。

  1. 使用本指南中的额外权利设置权限:https://www.thomasvitale.com/how-to-setup-gdb-and-eclipse-to-debug-c-files-on-macos-sierra/

创建一个包含以下内容的 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.allow-jit</key>
        <true/>
        <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
        <true/>
        <key>com.apple.security.cs.allow-dyld-environment-variables</key>
        <true/>
        <key>com.apple.security.cs.disable-library-validation</key>
        <true/>
        <key>com.apple.security.cs.disable-executable-page-protection</key>
        <true/>
        <key>com.apple.security.cs.debugger</key>
        <true/>
        <key>com.apple.security.get-task-allow</key>
        <true/>
    </dict>
    </plist>

然后,打开终端提示符,转到保存 xml 文件的目录并运行:

codesign --entitlements gdb-entitlement.xml -fs gdb-cert $(which gdb)

其中“gdb-cert”是您之前为代码签名创建的证书。 完成这些步骤并在 Eclipse 上正确设置 GDB 路径后,调试再次工作。

【讨论】:

  • 非常感谢。通过遵循您和@ThomasVitale 的指导方针,我终于能够在 Eclipse 中进行调试了。
  • 也非常感谢。用这些已解决的 gdb 挂起问题替换我拥有的权利。
猜你喜欢
  • 2019-11-24
  • 2020-02-02
  • 2020-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
  • 2013-11-20
  • 2020-02-06
相关资源
最近更新 更多