Qt Creator 远程调试

9
我有一个应用程序在嵌入式Linux设备上运行。在Eclipse中,我可以使用eclipse-cdt-launch-remote插件进行远程调试,其中我指定要运行的二进制文件以及将其放置在设备上的位置,并在运行应用程序之前导出一些环境变量。该应用程序是一个自定义Makefile构建的C++应用程序,构建为ELF文件。
通过SSH使用用户名和密码登录,在设备上部署该应用程序。然后,我可以使用Eclipse进行调试,例如单步执行等。(我还使用了MentorGraphics交叉编译器arm-none-linux-gnueabi-2014.05)
我的问题是:如何在Qt Creator中模仿相同的功能,因为我更喜欢使用Qt Creator编码而不是使用Eclipse? 我知道一个简单的解决方法是在Qt Creator中编写代码,然后使用Eclipse进行调试,但我真的想使用Qt Creator进行调试。
  • 编辑:通过数小时的测试和阅读Qt Creator IDE的相关内容,我解决了这个问题。
    1. 导入我的Makefile项目。
    2. 然后我进入工具下的选项并添加了使用SSH的设备。
    3. 然后我添加了一个调试器,我使用gdb-multiarch,因为预构建的工具链二进制文件中提供的调试器不支持Python。
    4. 然后我添加了我的自定义工具链,将编译器路径指向工具链二进制文件g++。并将ABI设置为arm-linux-generic-elf-32bit。虽然我在调试期间实际上没有看到使用编译器设置。
    5. 我创建了一个新的kit,使用我的设备、调试器和编译器,并将设备类型设置为通用Linux设备。指向我在构建根文件系统时提取的sysroot。这些是我在kit中设置的唯一选项。
    6. 关闭选项菜单,进入项目,在其中添加我的新kit。
    7. 更改构建设置,为应用程序设置构建目录和构建步骤。
    8. 更改运行设置以使用一些自定义命令,例如将新构建的.elf应用程序移动到目标位置。然后我设置本地可执行文件和远程可执行文件的位置。远程可执行文件是我使用主机的自定义命令移动到目标位置的文件。
    9. 完成!现在我可以从Qt Creator对我的目标进行远程调试。

我认为在嵌入式软件的设计上花费一些思考是值得的,特别是将所有针对目标设备的代码放在具有可移植API的小型库中。这样,开发多个平台就给了我几个优势:1. 当要支持新的目标平台时,设计很可能可以正常工作。2. 大部分代码是与系统无关的,我可以在我喜欢的开发环境中开发和测试逻辑错误。测试与平台相关的代码是一个单独的步骤。然后,在任何平台提供性能和最终测试。 - BitTickler
在这个项目中,平台将不会改变,即使在未来的项目中也是如此。 但是,当我要在其他项目中使用其他平台时,这是一个很好的见解。 该代码是平台无关的,这意味着它只使用所有C++编译器支持的C++库和函数。 - YoloMcSwaggy
是的,QT具有内置支持,但在使用Eclipse时,我实际上没有这些步骤。 可能我只是错过了某些选项,应该进一步调查。 我在选项下添加了设备,并测试了连接。 只是在Eclipse中,我在调试时不使用sysroot或交叉编译器,它就能正常工作! 但这并不是什么值得说的东西.. 我只需要知道如何设置调试。如果我解决了问题,我会尝试更多并返回解决方案。 - YoloMcSwaggy
1个回答

9

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

在嵌入式Linux设备上:

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

在Qt Creator上:

  • 进入工具 > 选项 > 设备并创建一个新设备,指定地址(即IP和端口号)和凭据(即root和密码)。更多信息请参考这里
  • 进入工具 > 选项 > 构建和运行 > 编译器并添加gcc 交叉编译器路径(更多信息可在这里找到)
  • 进入工具 > 选项 > 构建和运行 > 调试器并添加gdb 交叉调试器路径(更多信息可在这里找到)
  • 最后一步,进入工具 > 选项 > 构建和运行 > 套件,将编译器、调试器和设备链接为单个套件,并指定sysroot(即嵌入式Linux根文件系统的本地副本)。
  • 将构建目标设置为Debug。
  • 在Qt项目中,检查是否选择了所有部署步骤(例如将文件传输到远程设备),并添加任何所需参数(例如Qt 4.x上的触摸屏-qws

一般来说,请查看这里的指南here


Qt Creator默认使用qmake。它也支持cmake以及标准的makefiles,但我建议您坚持使用qmake(在启动新项目并复制粘贴现有代码时)。 - Claudio
现在我已经成功调试了应用程序,但是我必须手动将.elf文件移动到目标根文件系统。 在运行设置中的部署选项下有一个“要部署的文件”选项: 但是它是空的,而且我无法更改它,因为我缺少一个.pro文件,你知道是否有办法编辑它,以便每次调试时二进制文件都被移到目标位置吗? - YoloMcSwaggy
如果您在Qt Creator中正确设置了项目,只需单击一下即可自动构建、传输、启动并附加到gdb程序!尝试通过进入目录并键入“qmake -project”来创建“.pro”文件。如果不起作用,您可能需要启动一个新项目并复制粘贴源代码。 - Claudio
您可以添加部署步骤“自定义进程步骤”,并编写一个命令将.elf文件复制到目标位置。 - Tony O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接