CLion 实现远程调试

CLion 是 JetBrains IDE 全家桶产品之一,可以用来开发 C/C++ 项目,而 GDB 则可以用来对 C/C++ 程序进行调试。

作为一款调试器,GDB 为程序开发人员提供了强大的调试功能,但却需要使用命令来执行调试操作,操作起来不是很方便。(有关 GDB 的使用,可以参考文章《GDB 调试》。)为此,CLion 为程序开发人员提供了图形化的调试界面以方便调试。另外,CLion 还提供了远程调试的功能。因为在实际项目中,我们常会碰到在本地开发环境编写代码,程序却在远程机器运行的情况。远程调试功能对我们来说是十分必要的。

本文讲述如何使用 CLion 来实现远程调试
 

环境准备

假设本地开发环境是 Windows 操作系统,程序远程执行环境是 CentOS 操作系统。为满足远程调试,需要在 CentOS 上安装必要的软件,安装的软件包括:

cmake
gcc
gdb
gdbserver


安装命令如下:

yum install cmake -y
yum install gcc-c++ -y
yum install gdb -y
yum install gdb-gdbserver -y



cmake 用于管理编译过程,生成 Makefile 文件;gcc-c++ 是编译器;gdb 是个调试工具,程序调试功能实际上就是由 gdb 提供的;gdbserver 用于监听某个 TCP 端口,允许远程主机连接,以实现远程调试功能。

至于本地开发环境,Windows 操作系统上安装好最新版本的 CLion ,以笔者为例,当前 CLion 最新版本为 2018.3。

代码同步


使用 CLion 创建一个 C++ 项目 helloworld。然后,打开菜单 Tools - Deployment - Configuration,配置远程主机以及本地目录与远程目录的映射关系:


右键项目文件夹,选择 Deployment - Upload to 10.88.115.114,便将项目源代码上传至 10.88.115.114 主机上。

上述我们配置了远程主机与本地主机目录映射,因此执行上传操作后,可以看到源代码已被上传至上述配置的目录中。

代码编译


CLion 为我们生成了默认的源代码main.cpp,修改 main.cpp,增加一个 add 函数,方便展示调试功能:

#include <iostream>

using namespace std;

int add(int a, int b)
{
    int sum = a + b;
    return sum;
}

int main() {
    std::cout << "Hello, World!" << std::endl;
    int sum = 0;
    sum = add(5, 3);
    std:cout << "sum of 5 and 3 is " << sum << std::endl;

    return 0;
}


修改 main.cpp 源代码后,需要重新将代码上传至远程机器。

CLion生成的 CMakeLists.txt 如下,使用 C++98 标准,指定生成的可执行文件名为 helloworld:

project(helloworld)

set(CMAKE_CXX_STANDARD 98)

add_executable(helloworld main.cpp)


由于上面我们已将源代码上传至 10.88.115.114 主机,进入 10.88.115.114 目录 /home/lihao/code/cpp/hello,然后执行以下操作:

$ cd /home/lihao/code/cpp/hello
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_BUILD_TYPE=Debug
$ make


执行 cmake 命令会生成 Makefile 文件,指定 -DCMAKE_BUILD_TYPE=Debug 是为了支持 gdb 调试。

执行 make 命令会在 build 目录下编译生成可执行文件:helloworld。

远程调试


经过上述的操作步骤,接下来我们就可以实施远程调试了。

在远程主机继续执行命令:

gdbserver :1234 /home/lihao/code/cpp/hello/build/helloworld



即指定 gdbserver 监听端口 1234,输出:

Process /home/lihao/code/cpp/hello/build/helloworld created; pid = 12496
Listening on port 1234

返回本地 CLion,配置远程调试信息,增加一个 GDB Remote Debug 配置:

然后输入以下配置信息:

设置断点,按下调试按钮,可以看到程序已被执行起来,且中断在断点处,可以看到变量值:

需要指出的是,helloworld 程序的运行是在远程主机,并不是本地主机,CLion 通过向 gdbserver 发送调试命令从而达到控制远程主机上的 gdb 的目的。

参考资料
https://www.suninf.net/2018/07/clion-remote-debug.html
CLion 的每日提示
 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
c 环境配置 colin 主要包括三个步骤:安装编译器、配置环境变量和测试编译器。 首先,安装编译器。在安装 c 环境之前,我们需要先下载对应的编译器软件。常用的 c 编译器有 gcc、clang、MSVC 等。根据个人需求选择适合自己的编译器,并下载对应的安装包。然后,按照安装向导进行安装即可。安装完成后,我们就拥有了一个可用的 c 编译器。 接下来,配置环境变量。环境变量的配置可以使得我们在任意目录下都能够直接使用 c 编译器。首先,找到我们安装的编译器安装目录。然后,将该目录添加到系统的环境变量中。具体的配置步骤可以根据操作系统的不同而有所差异,但一般都是在控制面板或者系统设置中找到“环境变量”选项,然后添加编译器安装目录到系统的“PATH”变量中。配置完成后,我们就可以在任意目录下打开命令行终端,输入编译器命令来编译和运行 c 程序。 最后,测试编译器。经过以上两个步骤的配置,我们就可以测试我们的 c 编译器是否正常工作了。在任意目录下新建一个文本文件,将其后缀改为“.c”,比如“test.c”。然后,用任意文本编辑器打开该文件,输入一段简单的 c 代码,比如“#include <stdio.h> int main(){ printf("Hello, world!"); return 0; }”。保存文件后,回到命令行终端,进入该文件所在的目录,输入编译命令,如“gcc test.c -o test”,然后按回车键进行编译。如果没有出现错误信息,说明我们的 c 编译器已经成功配置。 综上所述,通过安装编译器、配置环境变量和测试编译器三个步骤,我们可以完成 c 环境的配置,从而能够顺利编译和运行 c 程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值