CppGuide社区 CppGuide社区
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
  • C++语言面试问题集锦
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • 🔥C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 🔥从零用C语言写一个Redis
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • Go语言特性

    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 🔥使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
首页
  • 🔥最新谷歌C++风格指南(含C++17/20)
  • 🔥C++17详解
  • 🔥C++20完全指南
  • 🔥C++23快速入门
  • C++语言面试问题集锦
  • 🔥交易系统开发岗位求职与面试指南 (opens new window)
  • 第1章 高频C++11重难点知识解析
  • 第2章 Linux GDB高级调试指南
  • 第3章 C++多线程编程从入门到进阶
  • 第4章 C++网络编程重难点解析
  • 第5章 网络通信故障排查常用命令
  • 第6章 高性能网络通信协议设计精要
  • 第7章 高性能服务结构设计
  • 第8章 Redis网络通信模块源码分析
  • 第9章 后端服务重要模块设计探索
  • 🚀 全部章节.pdf 下载 (opens new window)
  • 源码分析系列

    • leveldb源码分析
    • libevent源码分析
    • Memcached源码分析
    • TeamTalk源码分析
    • 优质源码分享 (opens new window)
    • 🔥远程控制软件gh0st源码分析
  • 从零手写C++项目系列

    • 🔥C++游戏编程入门(零基础学C++)
    • 🔥使用C++17从零开发一个调试器 (opens new window)
    • 🔥使用C++20从零构建一个完整的低延迟交易系统 (opens new window)
    • 🔥使用C++从零写一个C语言编译器 (opens new window)
    • 🔥从零用C语言写一个Redis
  • 🔥Windows 10系统编程
  • 🔥Linux 5.x内核开发与调试 完全指南 (opens new window)
  • TCP源码实现超详细注释版.pdf (opens new window)
  • Go语言特性

    • Go系统接口编程
    • 高效Go并发编程
    • Go性能调优
    • Go项目架构设计
  • Go项目实战

    • 🔥使用Go从零开发一个数据库
    • 🔥使用Go从零开发一个编译器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥使用Go从零开发一个解释器 (opens new window)
    • 🔥用Go从零写一个编排器(类Kubernetes) (opens new window)
Rust编程指南
  • SQL零基础指南
  • MySQL开发与调试指南
GitHub (opens new window)
  • 第1章高频C++11重难点知识解析

  • 第2章Linux GDB高级调试指南

    • 2.1 SSH 工具与 FTP 工具
      • 2.2 Makefile 与 cmake
      • 2.3 使用Visual Studio管理和阅读开源项目代码
      • 2.4 gdb 调试准备
      • 2.5 gdb常用命令详解——利用gdb调试redis
      • 2.6 使用gdb调试多线程程序
      • 2.7 使用gdb调试多进程程序——以调试nginx为例
      • 2.8 gdb实用调试技巧
      • 2.9 gdb tui——gdb图形化界面
      • 2.10 gdb 的升级版——cgdb
      • 2.11 使用VisualGDB调试
      • 2.12 本章总结与扩展阅读
    • 第3章C++多线程编程从入门到进阶

    • 第4章C++网络编程重难点解析

    • 第5章网络通信故障排查常用命令

    • 第6章高性能网络通信协议设计精要

    • 第7章高性能服务结构设计

    • 第8章Redis 网络通信模块源码分析

    • 第9章后端服务重要模块设计探索

    • C++后端开发进阶
    • 第2章Linux GDB高级调试指南
    zhangxf
    2023-04-05
    目录

    2.1 SSH 工具与 FTP 工具

    C/C++ 开发中,我们大多数使用的开发机器是 Windows 和 Mac,等程序开发完毕以后拿到专门的 Linux 机器上去编译和调试,尤其是在公司内部,通常不大可能给员工每个人分配一台专门的装有 Linux 系统的机器,而是准备一台配置较高的开发机器,给每个开发人员分配一个 Linux 账号;或者干脆让员工自己安装虚拟机,并在虚拟机上安装 Linux 系统使用。

    无论哪种方式,我们通常都不会直接登录到 Linux 系统中去进行直接操作,而是通过一些支持 SSH 协议的工具远程连接到目标 Linux 上,目前主流使用的两大 SSH 工具分别是 xshell 和 SecureCRT,这两种工具的用法基本相似,我们这里以 xshell 为例来说明。

    # xshell

    xshell 的官网是:https://www.netsarang.com/en/,虽然 xshell 是一款商业软件,但也提供了免费的个人使用版本(Free License for Home and School Users),在官网找到下载链接:

    进入个人免费版本后填写自己的姓名和邮箱后点击下载按钮,相应的邮箱就会收到一封含有下载 xshell 免费版本链接的邮件:

    下载并安装 xshell 之后,我们就可以使用 xshell 连接到 Linux 机器上去了。

    点击主界面的菜单【文件】- 【新建...】,或者点击工具栏的新建按钮弹出【新建会话属性】对话框:

    在相应编辑框中输入你的 Linux 机器名称、主机地址、端口号(默认是 22),然后点击连接按钮即可。

    在接下来弹出的对话框中输入你的 Linux 机器的用户名和密码点击“确定”按钮后,即可连接上 Linux 机器。

    出现如下图所示界面即表示连接成功。

    在 xshell 的左侧有一个会话管理界面,记录了我们所有连接过的会话,我们双击其中某一项即可使用对应的配置连接对应的 Linux 机器。

    我们有时候需要在目标 Linux 机器与本地机器之间相互发送文件,对于 CentOS 系统,可以使用 sz 和 rz 命令,如果读者的机器上没有这两个命令可以使用如下命令安装:

    yum install lrzsz
    
    1

    安装完毕之后,如果需要给目标 Linux 机器发送一个文件,可以在连接上 Linux 机器后在 shell 终端执行:

    rz -y
    
    1

    此时就会弹出选择文件的对话框,我们选择需要上传的文件可以将本机上的该问价上传到远端 Linux 机器上。

    反过来,如果我们想将远端 Linux 机器上的文件发送到本机,执行:

    sz 文件全饰路径
    
    1

    这样会弹出一个对话框让我们选择要将文件保存到本机的位置。

    # FTP 工具

    上面介绍的 rz 和 sz 命令虽然方便,但只适用于传输单个文件,不适用批量传输文件和文件夹,为此我们可以使用支持 SFTP 协议的工具远程连接到目标 Linux 机器上来进行文件和文件夹传输。

    这样的工具很多,例如 WinSCP、xshell 配套的 XFTP,笔者喜欢的一款工具是开源的 FTP 软件 FileZilla。FileZilla 界面如下图所示:

    点击菜单【文件】- 【站点管理器...】或者工具栏【打开站点管理器】按钮打开站点管理器界面:

    将协议改成 SFTP,输入主机名、用户名和密码信息之后点击“连接”按钮即可连接上远程 Linux。

    此时我们就可以自由将文件在本机和远端 Linux 系统中拖拽了。

    需要注意的是,如果登录的账号对 Linux 下某个目录无权限访问,是不可以将本机的文件拖到该目录下的,或者从该目录将文件下载到本机。

    FileZilla 的源码是开源的,源码质量也比较高,有兴趣的读者可以从 https://filezilla-project.org/ (opens new window) 下载其源码进行学习。

    1.11 stl中的智能指针类详解
    2.2 Makefile 与 cmake

    ← 1.11 stl中的智能指针类详解 2.2 Makefile 与 cmake→

    最近更新
    01
    第二章 关键字static及其不同用法
    03-27
    02
    第一章 auto与类型推导
    03-27
    03
    C++语言面试问题集锦 目录与说明
    03-27
    更多文章>
    Copyright © 2024-2025 沪ICP备2023015129号 张小方 版权所有
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式