C++ Qt-Creator远程调试

C++ Qt-Creator远程调试,c++,qt,qt-creator,embedded-linux,C++,Qt,Qt Creator,Embedded Linux,我有一个在嵌入式Linux设备上运行的应用程序。 在Eclipse中,我可以使用EclipseCDT launch remote插件运行远程调试,在该插件中,我指向一个二进制文件以运行,并在运行应用程序之前将其放置在设备上,同时导出一些环境变量。 该应用程序是一个C++应用程序,带有一个自定义的Makefile,用于将应用程序构建为ELF文件 应用程序通过SSH部署在设备上,使用带有用户和密码的登录名。然后,我可以使用步进等方法从Eclipse进行调试。 (我也在使用arm-none-linux

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

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

我的问题是:我更喜欢用Qt-Creator编码,而不是用Eclipse编码,因此如何在Qt-Creator中模拟相同的功能? 我知道一个简单的修复方法是在QtCreator中编写代码,然后使用Eclipse进行调试,但我确实希望使用QtCreator进行调试

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

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

在嵌入式Linux设备上:

  • 为根用户创建登录密码
  • 安装openssh服务器和gdb服务器包
在Qt创建者上:

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

总的来说,请看一下指南。

我觉得值得花点时间来设计我的嵌入式软件,让所有依赖于目标的代码都放在带有可移植API的小型库中。然后,多平台的开发给了我几个优势:1。在支持新的目标平台时,设计很有可能起作用。2.大部分代码是独立于系统的,我可以在我喜欢的开发环境中开发和测试逻辑错误。测试依赖于平台的代码是一个单独的步骤。然后,无论平台提供什么,都将进行性能和最终测试。在本项目中,即使在未来的项目中,平台也不会改变。但无论如何,当我在其他项目中使用其他平台时,我有很好的洞察力。代码是平台无关的,意思是它只使用C++库和所有C++编译器支持的函数。是的Qt有内置的支持,但是当我使用Eclipse时,我真的没有这些步骤。也许我只是错过了一些选择,应该进一步调查。我在“选项”下添加了一个设备,并测试了连接是否正常。只是在Eclipse中,在调试时,我不使用任何sysroot或交叉编译器,它只是工作!但这并不是真的要说。。我只需要知道如何设置调试。如果我解决了问题,我将尝试更多并返回解决方案。默认情况下,Qt Creator使用qmake。它还支持cmake和标准makefiles,但我建议您继续使用qmake(以防启动新项目并处理和粘贴现有代码),现在我已经成功地将其用于调试应用程序,但我必须手动将.elf文件移动到目标根文件系统。在“部署”下的“运行设置”中有一个选项“要部署的文件:”但它是空的,我无法更改它,因为我缺少一个.pro文件,您知道是否有办法编辑它,以便每次我调试二进制文件时都将其移动到目标??如果您在Qt Creator中正确设置项目,它将自动生成、传输、,只需单击一下,即可启动并连接到gdb程序!通过输入目录并键入
qmake-project
,尝试创建
.pro
文件。如果它不起作用,您可能需要启动一个新项目,复制并粘贴源代码