【问题标题】:Stepping into Qt sources in Qt Creator (in Ubuntu Linux)在 Qt Creator 中进入 Qt 源代码(在 Ubuntu Linux 中)
【发布时间】:2011-02-19 07:48:18
【问题描述】:

我在 Ubuntu 中使用 Qt Creator。它是从存储库安装的,但就目前而言,调试时无法进入 Qt 源代码。

我怎样才能启用它?

【问题讨论】:

    标签: c++ qt debugging ubuntu


    【解决方案1】:

    由于Qt Creator使用gdb,所以需要配置gdb。首先要做的是安装Qt调试符号:

    apt-get install libqt4-dbg
    

    或者,对于 Qt5:

    apt-get install qtbase5-dbg # For the qtbase package
    

    这将为 Qt 库安装调试符号。旧版本的 Ubuntu 有一个愚蠢的错误,需要额外的技巧来纠正这些符号文件,但在当前版本中它可以正常工作。

    这将使 gdb 进入 Qt 方法,但没有源代码就没有乐趣了。所以我们需要可以像这样安装的源,假设源存储库在 APT 中启用:

    apt-get source qt4-x11
    ln -s qt4-x11-4.7.0 qt # a convenience symlink
    

    或者,对于 Qt5:

    apt-get source qtbase-opensource-src
    # Make a link as above, if you wish
    

    这将下载源代码,将它们解压到当前目录并相应地修补它们,除非当前目录不可被当前用户写入,否则不需要 root 权限。

    最后一件事是通知 gdb 源位置,这是通过将其放入 ~/.gdbinit 文件中完成的:

    dir ~/vita/qt/src/corelib
    dir ~/vita/qt/src/gui
    dir ~/vita/qt/src/network
    dir ~/vita/qt/src/sql
    

    根据需要添加模块和更正路径。方便的符号链接在这里非常有用,因此我们不必每次升级到新的 Qt 版本时都编辑这个文件。我们只需要下载新的源,修补它们并更改符号链接。

    请注意,即使我们已经安装了调试符号,我们仍然使用 Qt 库的发布版本。这意味着代码经过高度优化,有时在进入 Qt 二进制文件时会表现得非常奇怪。如果有问题,则需要在调试模式下构建 Qt,单独安装(例如,在 /usr/local/qt4-debug 中)并告诉 Qt Creator 使用该特定安装。

    【讨论】:

    • 感谢您的回答。顺便说一句,您可以使用“apt-get source libqt4-core libqt4-gui”,它会自动下载和修补它们。
    • @satuon,我忘记了它,因为我出于某种原因禁用了源存储库。会修复的。
    • 也许值得一提的是应该启用源代码仓库,因为没有它我得到一个“无法找到qt4-x11的源包”错误,一些新用户可能不知道原因对于这个错误...
    • 我在安装了 ubuntu-sdk 的 Ubuntu 13.04 上做了大致相同的事情,但改用了 qtbase-opensource-src 包。谢谢你给我指路,@Sergey Tachenov!
    • 在带有系统 Qt5 的 Ubuntu 13.10 中,适当的包是 qtbase5-dbgqtbase-opensource-src
    【解决方案2】:

    我让它在 Ubuntu 上运行的唯一方法是 building Qt from sourcesconfigure -debug。 之后一切都开始像魅力一样发挥作用。

    【讨论】:

      【解决方案3】:

      用于 Linux 的 Qt 二进制包不包含调试符号,因此调试器不知道要跳转到的文件或行号。如果您希望能够调试 Qt 代码,则需要使用 -debug 配置选项自行构建 Qt。

      Sergey Tachenov 中的说明仅在您针对可从 Ubuntu 存储库中找到的 Qt 版本构建应用程序时才有效。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多