首页 文章

如何使用XCode 4.6.2和lldb调试非xcode进程?

提问于
浏览
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显示源代码,如果我告诉XCode使用gbd(仍然可以,从“附加到进程/按进程标识符(PID)或名称”菜单),但是gdb支持正从XCode中删除,所以这个方法很快就会停止工作 .

2 回答

  • 1

    您可以使用lldb中的 target.source-map 设置来提供映射 . 如果您在自己的系统上构建了程序,我不确定为什么这是必要的 - 只有在源代码在一个位置( /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/path 替换为 /my/path . 您可以将此设置放在 ~/.lldbinit 文件中以使其保持不变 .

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

    啊等我刚刚看到Xcode 4.2.3位...这是lldb的一个非常旧的版本 . 强烈建议升级到Xcode 4.6,如果你打算使用lldb - 我不记得lldb在Xcode 4.2中很好......

  • 0

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

相关问题