macOS 10.15 Catalina中Eclipse C++调试的gdb问题

6

我正在使用macOS 10.15.2 Catalina,并尝试在Eclipse中调试一个Hello World C++程序。

我通过从Homebrew安装gdb调试器并按照以下链接中的步骤签署证书来设置它。

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

然而,调试器并没有启动。

我已经根据下面截图中提到的方式在Eclipse中设置了gdb设置。

GDB setting in Eclipse

当我调试项目时,我收到错误:Configuring GDB Aborting configuring GDB(如下面的截图所示)。

enter image description here


如果我没记错的话,gdb 已经几年没用了。请使用 lldb,或者尝试获取 gdb 7。 - sweenish
我也尝试了gdb 7,但它也有同样的问题。不幸的是,我无法使用lldb。我会再次尝试lldb。非常感谢。 - Yasir Saleem
2个回答

4
你使用的是哪些版本的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中进行调试。非常感谢。 - Yasir Saleem
@ThomasVitale 我按照您的所有指示进行了操作,但是不幸的是当我按下调试按钮时它并没有启动。我与您的教程唯一的区别是gdb版本为10.1。这可能是问题所在吗?我该如何安装您的8.3版本? - FEGuy

4

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

  1. 确保您的调试配置文件具有.gdbinit的绝对路径。 您需要在用户文件夹中拥有一个名为.gdbinit的文件,并包含以下内容:
set startup-with-shell off

我的Eclipse调试配置指向了这个文件,但在我把路径改为绝对路径之前它没有读取到。

  1. 使用像这篇指南中的额外授权设置权限。

创建一个名为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)

在这些步骤之后,正确地设置Eclipse中的GDB路径后,调试再次可用,其中"gdb-cert"是您之前为代码签名创建的证书。


非常感谢。遵循您和@ThomasVitale的指南,我终于能够在Eclipse中进行调试了。 - Yasir Saleem
也非常感谢。用这些替换我之前的权限,解决了gdb挂起的问题。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接