1

我有一个使用 GNU make、clang 等构建的进程正在运行(不是应用程序),具有完整的调试信息。我想用 lldb 和一个显示源代码、变量绑定等的 GUI 调试器附加到它。

有没有办法在 OS X 10.8 上使用 XCode 4.6.2 或任何其他工具(例如 Emacs 的工作 lldb 模式)上的 lldb 来做到这一点?

我尝试使用 XCode 4.6.2 附加,但它只显示反汇编,我发现无法告诉它在哪里寻找源代码。SO上有人建议编辑方案并设置自定义工作目录,但文件夹选择图标被禁用。另一个建议将文件添加到 ... 但这没有帮助。

使用普通 lldb 从 Terminal.app 附加显示行号和源文件名(但不显示路径名)。我也找不到告诉 lldb 在哪里寻找源代码的方法。

在 gbd 中,在命令行上,我可以使用 dir 命令告诉它源的位置,这使得 list 命令起作用。如果我告诉 XCode 使用 gbd(仍然可以,从“附加到进程/按进程标识符 (PID) 或名称”菜单中),这会使 XCode 显示源代码,但是从 XCode 中删除了 gdb 支持,因此此方法将很快停止在职的。

4

2 回答 2

1

您可以使用target.source-maplldb 中的设置来提供映射。如果您在自己的系统上构建程序,我不知道为什么这是必要的 - 只有当您在一个位置(/tmp/original-directory)使用源代码构建程序然后将源代码移动到另一个位置时才会出现这种情况( /tmp/new-directory) 并尝试调试。更常见的是,如果您在一个系统上构建,然后将所有内容移至第二个系统进行调试,但不要将源文件复制到同一位置。

无论如何, http: //lldb.llvm.org/lldb-gdb.html显示了如何使用它的示例,但简而言之,

(lldb) settings set target.source-map /buildbot/path /my/path

会告诉 lldb 在查找源代码文件时替换所有出现的/buildbot/pathto 。/my/path您可以将此设置放在您的~/.lldbinit文件中以使其保持不变。

gdb 的命令还没有直接等价的,dir但您通常可以通过这种方式轻松完成相同的事情。

啊等等,我刚刚看到了 Xcode 4.2.3 位……那是 lldb 的一个非常旧的版本。如果您要使用 lldb,强烈建议升级到 Xcode 4.6 - 我不太记得 Xcode 4.2 中的 lldb...

于 2013-05-22T02:47:17.127 回答
0

许多年后......第一个可以在 OS X 上处理我们的代码的有用调试器是来自 Microsoft 的 VSCODE(当前为 VSCODE 1.9.1,带有 ms-vscode.cpptools 0.10.1)。那是出乎意料的。

于 2017-02-11T16:01:06.393 回答