【问题标题】:Xcode equivalent of Visual Studio's "Find Source"Xcode 相当于 Visual Studio 的“查找源代码”
【发布时间】:2014-08-19 05:39:17
【问题描述】:

我正在开发一个 Qt 项目,并已将 Qt 从他们的安装程序安装到我的计算机上。在 Visual Studio 中,调试步入 Qt 源代码很简单:当我在未知文件中输入函数时,它会打开文件浏览器让我找到原始 Qt 源代码。

Xcode 或 LLDB 中是否有等效的函数?

【问题讨论】:

    标签: xcode qt debugging visual-studio-2012 lldb


    【解决方案1】:

    调试信息记录了 QT 源文件在构建时的位置。您可以通过以下方式找到此信息:

      (lldb) image lookup -va main
        Address: hello[0x0000000100000f40] (hello.__TEXT.__text + 0)
        Summary: hello`main at hello.c:5
         Module: file = "/private/tmp/hello", arch = "x86_64"
    CompileUnit: id = {0x00000000}, file = "/tmp/hello.c", language = "ISO C:1999"
       Function: id = {0x00000026}, name = "main", range = [0x0000000100000f40-0x0000000100000f6d)
       FuncType: id = {0x00000026}, decl = hello.c:4, clang_type = "int (void)"
         Blocks: id = {0x00000026}, range = [0x100000f40-0x100000f6d)
      LineEntry: [0x0000000100000f40-0x0000000100000f56): /tmp/hello.c:5
         Symbol: id = {0x00000004}, range = [0x0000000100000f40-0x0000000100000f6d), name="main"
    

    但是用一些 QT 函数代替“main”。然后查看 CompileUnit 行并查看“文件”条目的内容。假设它说

    "/BuildDirectory/sources/SomeSubdirectory/SomeFile.cpp"
    

    现在大概您已经下载了 QT 源代码,并且它们位于本地计算机上的某个位置,比如在

    "/Users/ME/QT/sources"
    

    因此,您要做的是告诉 lldb:“当您看到根目录在 /BuildDirectory/sources 的源文件时,请改为查看 /Users/ME/QT/sources。”您可以使用 lldb "target.source-map" 设置来做到这一点。在这个例子中,你会说:

    (lldb) settings set target.source-map /BuildDirectory/sources /Users/ME/QT/sources
    

    您可以在命令行中键入它或将其放入您的 .lldbinit 文件中以供更一般的使用。 lldb 将自动更新其源映射,但如果您在 Xcode 中运行,则必须在发出命令后执行一次以使其更新。

    【讨论】:

    • 即使在加载库的调试版本时,我也没有得到 CompileUnit 行。我猜他们已经被剥夺了……
    • 我从未使用过 Qt,但很多像这样的项目都会提供调试和发布版本。可能值得检查一下 Qt 项目是否有这样的东西。
    • Mac 版本的 Qt 5.3(使用 Web 安装程序安装,而不是从源代码安装)似乎不包含 CompileUnit 信息。我刚刚从源代码 tarball 编译了 Qt 5.4,当设置 DYLD_IMAGE_SUFFIX=_debug 时,我得到了完整的调试信息,并且可以单步调试 Qt 源代码。我接受这个答案,因为它可能会帮助那些确实将 CompileUnit 信息指向错误位置的人,尽管我自己没有验证这一点。
    猜你喜欢
    • 2011-08-27
    • 2012-01-08
    • 2014-01-25
    • 2016-04-16
    • 1970-01-01
    • 2012-09-16
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多