c++ - Qt Creator 远程调试

标签 c++ qt qt-creator embedded-linux

我有一个在嵌入式 Linux 设备上运行的应用程序。 在 Eclipse 中,我可以使用 eclipse-cdt-launch-remote 插件运行远程调试,我在其中指向要运行的二进制文件,以及将其放置在设备上的位置,并在运行前导出一些环境变量应用程序。 该应用程序是一个 C++ 应用程序,带有用于将应用程序构建为 ELF 文件的自定义 Makefile。

应用程序通过 SSH 部署在设备上,使用用户名和密码登录。然后,我可以使用步进等从 Eclipse 进行调试。 (我也在为 arm-none-linux-gnueabi-2014.05 使用 MentorGraphics 交叉编译器)

我的问题是:我如何在 Qt Creator 中模仿相同的功能,因为我更喜欢使用 Qt Creator 编码而不是使用 Eclipse 编码? 我知道一个简单的解决方法是在 Qt Creator 中编写代码,然后使用 Eclipse 进行调试,但我真的想使用 Qt Creator 进行调试。

  • 编辑:通过数小时的测试和阅读 Qt Creator 解决了这个问题 集成开发环境。
    1. 导入了我的 Makefile 项目。
    2. 然后我进入“工具”下的“选项”并添加我使用 SSH 的设备。
    3. 在添加调试器之后,我使用了 gdb-multiarch,因为预构建工具链二进制文件中提供的调试器不支持 python。
    4. 然后我添加了我的自定义工具链,将编译器路径指向工具链二进制 g++。并将 ABI 设置为 arm-linux-generic-elf-32 位。虽然我实际上没有看到 调试期间使用的编译器设置。
    5. 我使用我的设备、调试器和编译器创建了一个新套件。并将设备类型设置为 Generic Linux Device。指向我的系统根 我在对文件系统使用 buildroot 时进行了提取。这些是 只有我在套件中设置的选项。
    6. 关闭选项菜单,进入我添加新工具包的项目
    7. 更改了build设置并为应用程序设置了构建目录和构建步骤。
    8. 更改了运行设置以使用一些自定义命令,例如将新建的 .elf 应用程序移动到目标。然后我设置 本地可执行文件和远程可执行文件所在的位置。 Remote 可执行文件是我使用自定义命令从 主持人。
    9. 瞧!我现在可以从 Qt Creator 对我的目标运行远程调试。

最佳答案

Qt Creator 内置支持在远程设备上自动部署。

在嵌入式 Linux 设备上:

  • root 用户创建登录密码
  • 安装openssh-servergdb-server

在 Qt Creator 上:

  • 输入工具 > 选项 > 设备 并创建一个指定地址(即 IP 和端口号)和凭据(即 root 和密码)的新设备。更多信息 here .
  • 输入Tools > Options > Build & Run > Compilers 并添加 gcc cross-compiler 路径(更多信息可用 here)
  • 输入 Tools > Options > Build & Run > Debuggers 并添加 gdb cross-debugger 路径(更多信息可用 here)
  • 作为最后一步,最后进入Tools > Options > Build & Run > Kits 并将编译器、调试器和设备链接到一个套件中,同时指定 sysroot(即嵌入式 Linux 的本地拷贝根文件系统)。
  • 将构建目标设置为调试。
  • 在 Qt 项目中,检查是否选择了所有部署步骤(例如将文件传输到远程设备)并添加任何需要的参数(例如 -qws 用于 Qt 4.x 上的触摸屏)<

总的来说,看看指南here .

关于c++ - Qt Creator 远程调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36398798/

相关文章:

c++ - 我什么时候需要 C++ 中的匿名类?

c++ - 如何在 C++ 程序中播放或打开 *.mp3 或 *.wav 声音文件?

c++ - 如何在 C++ 中增加信号量值,解决哲学家用餐问题

debugging - Qt Creator忽略断点

Qt5引用文档: qch files

android - Qt Creator 3.3.0 中的 "Create AndroidManifest.xml"按钮在哪里?

c++ - 应用程序无法正常启动(0xc00007b)

c++ - Qt:在默认浏览器中打开带有目标的链接,不会泄漏内存

c++ - Qt/QML : Text with inline QML elements

c++ - 无法在 QSplitter (Qt) 中交换小部件