我有一个运行(不是应用程序)的进程,使用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显示源代码,如果我告诉XCode使用gbd(仍然可以,从“附加到进程/按进程标识符(PID)或名称”菜单),但是gdb支持正从XCode中删除,所以这个方法很快就会停止工作 .
2 回答
您可以使用lldb中的
target.source-map
设置来提供映射 . 如果您在自己的系统上构建了程序,我不确定为什么这是必要的 - 只有在源代码在一个位置(/tmp/original-directory
)构建程序然后将源移动到另一个位置时才会出现位置(/tmp/new-directory
)并尝试调试 . 更常见的是,如果您将源文件复制到同一位置,则会出现这种情况 .无论如何,http://lldb.llvm.org/lldb-gdb.html显示了如何使用它的一个例子,但简而言之,
会告诉lldb在查找源代码文件时将所有出现的
/buildbot/path
替换为/my/path
. 您可以将此设置放在~/.lldbinit
文件中以使其保持不变 .gdb的
dir
命令没有直接的等价,但你通常可以通过这种方式轻松完成同样的事情 .啊等我刚刚看到Xcode 4.2.3位...这是lldb的一个非常旧的版本 . 强烈建议升级到Xcode 4.6,如果你打算使用lldb - 我不记得lldb在Xcode 4.2中很好......
许多年后......第一个可以在OS X上处理我们代码的有用调试器是Microsoft的VSCODE(目前是VSCODE 1.9.1,带有ms-vscode.cpptools 0.10.1) . 那是出乎意料的 .