• Clion远程调试


    本文是介绍通过clion进行本地windows对远程Linux的程序进程调试

    必要条件:
    Linux环境上有安装cmake、 make、 g++、 gdb、 gdbserver

    本文调试的代码

    #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;
    }

    CMakeLists.txt

    cmake_minimum_required(VERSION 3.15)
    project(project)
    
    set(CMAKE_CXX_STANDARD 11)
    
    add_executable(project main.cpp)

    步骤一:代码同步
    该步骤是用来配置本地clion的代码与远程对应代码目录自动同步用。如果是通过winscp、filezilla等工具手动上传代码,该步骤可以省略。
    ①配置Linux的环境信息,以及本地代码目录和远程代码目录的映射关系
    Tools -> Deployment -> Configuration -> 新增一个SFTP配置
    在这里插入图片描述
    在这里插入图片描述
    ②SFTP配置好后,就可以通过右键目录上传更新本地到远程
    在这里插入图片描述
    为了不用每次修改完代码后手动提交到远程,可以设置自动提交
    Tools -> Deployment ->Automatic Upload
    在这里插入图片描述
    步骤二:远程调试
    ①先将上传到Linux环境上的代码编译出可执行文件
    cd /home/feiyang/code/project
    mkdir build
    cd build
    cmake … -DCMAKE_BUILD_TYPE=Debug
    make
    ②将编译出的可执行程序下载到本地,后面设置Symbol file的时候用,我放在D:\testCode\project\ 目录
    ③远程调试配置 新增一个 GDB Remote Debug在这里插入图片描述
    在这里插入图片描述
    ‘target remote’ args 固定格式:tcp:ip地址:端口 端口可以自行设置
    Symbol file 这是填入步骤②下载下来的可执行程序,如果这个符号路径没有填写准确,一启动调试,Linux上用gdbserver监听的程序就会直接运行结束,clion中断点不生效
    Sysroot 可以不设置,设置为/时,clion就不会自动从目标环境中拷贝库文件

    ④在远程机器上启动gdbserver监听应用程序,命令如下:
    gdbserver :1234 /home/feiyang/code/project/build/main

    clion中对代码打上断点,点击Debug开始调试
    在这里插入图片描述
    对于正在运行中的程序可以用attch监听再调试 gdbserver --attach :1234 pid

    另外:
    对于应用程序依赖很多自己写的动态库的调试需要增加配置
    ①Sysroot配置为 /
    ②将生成的库文件放到本地如:D:\testCode\libs;然后在C:\Users\Admin 文件夹下新增.gdbinit文件,内容是: set solib-search-path D:\testCode\libs
    同时设置windows的用户环境变量 HOME = C:\Users\Admin

     
  • 相关阅读:
    java.util.Properties类
    java中log日志的使用(完全版)
    解读HDFS(转载)
    说明
    定时器中断和串口
    python day3
    python day2 基础总结:列表,元组,字典,集合
    python第二天作业:购物车
    作业总结:
    python第一天作业:用户登陆
  • 原文地址:https://www.cnblogs.com/lidabo/p/16349536.html
Copyright © 2020-2023  润新知