qt远程linux调试,使用Qt Creator作为Linux IDE,代替Vim:实现两台Linux电脑远程部署和gdb调试(一台电脑有桌面系统,一台电脑无桌面系统)...

序言

考虑到程序员在无桌面Linux的环境下编写C/C++程序,如果使用原生的Vim编辑和单步断点调试比较麻烦,不利于新手使用,所以笔者尝试使用Qt实现两台Linux电脑远程部署和调试。即程序员在调试电脑使用Qt编写代码,然后把目标程序部署在正式电脑上。本篇目的是帮助大家摆脱vim,一劳永逸,解决痛点。请读者不要误以为Qt Creator只能用来做桌面软件的,其实它也可以新建纯C/C++非桌面的工程,既可以qmake也可以cmake编译。准备两台电脑做验证,一台有Linux桌面系统,使用Qt Creator用于编辑源码调试环境,另一台只有终端,无Linux桌面系统,用于服务器正式环境。Qt Linux版本安装在调试机。本文以qt-opensource-linux-x64-5.7.1.run为例。Qt下载网址是:http://download.qt.io/official_releases/qt/

两台电脑(注意:本文以调试机和目标机作为区分描述)使用网线连接,相关情况如图所示:

74599b0fed302b08e765b3600d01e29c.png

正文

1、确保在Linux调试机安装了gcc和gdb。

不会安装的请参考以下文章:

注意事项:

必须安装有了gcc才能编译gdb。CentOS 7自动安装gcc的命令是:yum -y install gcc make glibc

安装完gcc,执行终端命令gcc -v可以查看安装的版本信息。CentOS 7默认的gcc版本是V4.8.5。

CentOS 7查看ip地址的命令是:ip addr

下载gdb源码的网址是:http://ftp.gnu.org/gnu/gdb/ 编译gdb源码之前,必须安装Texinfo文档系统。否则,编译gdb源码时会报错configure: error: no termcap library found。

以CentOS 7为例,安装命令是yum install ncurses-devel

以源码gdb-7.6.1.tar.gz为例,执行命令tar xzvf gdb-7.6.1.tar.gz解压之后,在一级目录/gdb-7.6.1/,执行以下命令编译:

cd gdb-7.6.1

./configure

make

make install

然后会在路径/usr/local/bin/生成gdb文件,执行终端命令gdb -v可以查看安装的版本信息。

2、在Linux目标机安装gdb和gdbserver

调试机和目标机的gdb版本必须一致。编译方法一致。

以源码gdb-7.6.1.tar.gz为例,执行命令tar xzvf gdb-7.6.1.tar.gz解压之后,在一级目录/gdb-7.6.1/,执行以下命令编译:

cd gdb-7.6.1

./configure

make

make install

然后会在路径/usr/local/bin/同时生成gdb和gdbserver文件。

目标机的gdbserver至关重要,没有它就无法单步断点调试!切记!验证gdb和gdbserver安装正确的方法是:

执行终端命令

gdb -v

gdbserver --version

如果都能正确显示版本号,说明安装成功!

如果是想单独编译gdbserver(注:我们这里不需要再执行这步骤,因为上面的方法已经包含了),则需要进入/gdb-7.6.1/gdb/gdbserver, 执行以下命令编译:

./configure

make

make install

然后会在路径/usr/local/bin/生成gdbserver文件,执行终端命令gdbserver --version可以查看安装的版本信息。

3、在Linux调试机设置目标机的信息

Qt Creator菜单->Tools->Options->Devices->Add

新建Linux的通用设备:

27b62782d92b54135e75ea7a16ca758e.png

填入目标机的IP地址(局域网和公网IP均支持),root和密码:

9a00ae5a47021bca23aa29523bc3032a.png

SSH连通之后的表现:

d679f1301a6989dabfb3f5edd9a3e269.png

e5b150acd86427e65cadc09762fb17ff.png

配置远程调试和编译的环境,自定义命名为“firecatTest”:

4d61600a836acb104ddc5ed8eba3c2f1.png

4、新建一个Non-Qt Project做测试验证,Non-Qt Project就是指非Qt库的编程,即原生态的Linux C/C++编程。

e5d8869460b689195eadb19574253109.png

Kit Selection要选择“firecatTest”:

280dc23357ff3047cee452fec9dc762c.png

如果是采用qmake编译方式,需要在工程的.pro文件加入以下几句话:

#远程部署,定义编译生成的文件在远程linux目标机的路径,路径可以自定义(也可以什么都不写,使用默认值,linux的根目录下)

target.path=/home/firecat/Test

INSTALLS += target

6de5fb1bb8d62c282997d60396c7a22b.png

编译,运行,大功告成!会在目标机/home/firecat/Test路径下生成执行文件mywin32。

如果采用cmake方式,文章末尾会讲述方法。

0a3d0d7346d071d02bf89dfcf8c02456.png

5、怎么远程单步调试?前提条件先要关闭Linux目标机的防火墙。

CentOS 7操作防火墙的命令是:

firewall-cmd --state #查看防火墙是否启用

systemctl stop firewalld #关闭防火墙

关闭防火墙之后怎么办?如何实现单步断点调试?记得文章步骤2描述的,要在目标机安装好gdb和gdbserver。然后,

方法一(推荐):简单明了,在调试机的工程源码下好断点,直接按F5,采用默认方式单步调试。

e6d7a94ae521f1a11d4c6cec321b654f.png

方法二(不推荐):复杂很多。

(1)在Linux目标机终端运行gdbserver命令:

/usr/local/bin/gdbserver 172.16.6.166:9900 /home/firecat/Test/mywin32

其中172.16.6.166是调试机的IP地址,9900是随意定的TCP端口号,mywin32是编程生成的目标执行文件。

226c311a617c521443efc5bc402d720c.png

(2)在Linux调试机上,设置Qt单步调试的参数:

Qt Creator菜单->Debug->Start Debugging->Attach to Running Debug Server

9a2118399664595c3b0b4ed4c60fd25b.png

其中,Server Port指的是TCP端口,Server address指的是目标机的IP地址;

Local executable指的是工程在本地(调试机)的生成文件。

参数设置完毕,点击ok按钮,开始调试!!

6、如果不想使用qmake,而是cmake编译和调试程序,怎么实现?请访问姊妹篇《使用Qt Creator作为Linux IDE,实现CMake编译和单步调试》,网址是:

注意:CMake远程生成的目标路径,默认是/root/xxx。可以手动修改CMakeLists.txt文件更改输出路径,SET(EXECUTABLE_OUTPUT_PATH "***").如此一来开发机和目标机的路径都会有生成结果。我的实测结果是,貌似路径里面有home目录,目标机就不行?例如SET(EXECUTABLE_OUTPUT_PATH "/home/12/"),结果文件开发机在,但是目标机并不在,而是会在根目录生成/12的文件夹。再比如"/home/firecat/test"目标机也不在,而是根目录下生成"test"文件夹。

cmake_minimum_required(VERSION 2.8)

project(untitled)

add_executable(${PROJECT_NAME} "main.cpp" "test.cpp")

##SET(EXECUTABLE_OUTPUT_PATH "/home/firecat/test/")

SET(EXECUTABLE_OUTPUT_PATH "/hellotest/12/34")

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT Creator是一个集成开发环境(IDE),用于开发基于Qt框架的应用程序。它具有一些方便的功能,例如远程调试,允许开发者在远程设备上调试他们的应用程序。 使用QT Creator进行远程调试的步骤如下: 1. 首先,确保远程设备上安装了Qt库和调试工具。这些库和工具可以通过在远程设备上运行适当的安装程序来获得。 2. 打开QT Creator并创建一个新的项目或打开一个现有的项目。确保您已经将项目设置为基于Qt框架。 3. 在QT Creator的“设置”菜单中,选择“调试器”选项。在那里,您可以配置所需的调试器。 4. 点击“添加”按钮并选择一个调试器。根据您的设置,您可能需要提供调试器的路径和参数。 5. 配置完成后,转到项目的“调试”设置。确保选择了正确的调试器,并在“远程主机”字段中输入远程设备的IP地址或主机名。 6. 连接到远程设备。您可以通过SSH或其他远程连接协议连接到远程设备。确保您具有足够的权限来访问设备和调试器。 7. 在QT Creator中启动调试会话。您可以通过单击菜单栏上的“调试”按钮或使用快捷键来执行此操作。 8. QT Creator将在远程设备上启动应用程序,并开始调试会话。您可以使用QT Creator提供的调试功能来断点、单步执行、查看变量值等。 需要注意的是,在进行远程调试时,确保您的开发计算机和远程设备之间的网络连接稳定,并且有足够的带宽来传输调试信息。 通过使用QT Creator远程调试功能,开发人员可以方便地调试他们的应用程序,并在远程设备上实时查看程序的行为和变量的值,从而加快开发和调试的过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值