Linux中编译C++代码的g++工具,以及g++的常用操作指令 2. Linux下C++命令行编译示例 3. Linux下的GDB调试器常用指令 1....进入调试模式 在进入调试模式之前,先编译源代码,如下过程。...普通编译方式 g++ sum.cpp -o no_g.out 编译出用于调试的可执行文件 g++ -g sum.cpp -o yes_g.out 使用gdb命令进行调试,如果我们调试 no_g.out...,将会提示一下图错误 因为no_g.out这个可执行文件不包含用于调试的信息,输入quit再按回车即可,通过gdb yes_g.out指令执行包含调试信息的可执行文件,看到以下输出 此时可以正常进入调试...在gdb调试中,如果我们只按回车键,gdb将执行我们最后一次输入的指令,所以我们可以一直按回车键继续让程序单步执行。
Python提供类似于C++ gdb的调试工具pdb,我们可以在Linux下使用pdb在命令行下进行Python程序的调试。...在命令行启动目标程序,加上-m参数。 python -m pdb hello.py 这样程序会自动停在第一行,等待你进行调试,如下图。...我们可以使用调试命令进行调试,和使用IED调试类似。 ? 2....在Python交互环境中启用调试 我们可以在源文件要进入调试的的地方,加入如下代码: import pdb pdb.set_trace() ?...然后可以在交互式环境中自动进入pdb调试模式,调试方法和上面类似。
最近在学习网络协议,无意间发现了一个可以查看网络封包,调试网络的软件:wireshark ? 我们可以通过这个软件,去查看所有tcp,udp等网络协议的原始传输数据,例如tcp ?
Sendip是一个linux平台的命令行发数据包工具,目前(2018年2月)支持的协议有ipv4、ipv6、icmp、tcp、udp、bgp、rip、ntp,作者表示其他协议将会后面支持,当他有空写的时候...又因为它是命令行的,还支持从文件中直接读取整个packet发送,所以适合用脚本批量测试。...Format: pointer:addr1:addr2:… tcp模块: -ts x 源端口 Default: 0 -td x 目的端口 Default: 0 ———————————————-32bit...of list -tonop TCP option: no op -tomss x TCP option: maximum segment size -towscale x TCP option: window...scale (rfc1323) -tosackok TCP option: allow selective ack (rfc2018) -tosack x TCP option: selective
抓取TCP消息包! 工具wireshark,安装在IM服务器pigeon-gate 所在的机器,安装方式自己百度。...打开wireshark工具,在过滤器中输入"tcp and ip.addr == 192.168.13.1" (该IP是手机IP地址 ),表示只显示来自192.168.13.1 IP地址的TCP数据。...IM客户端,发送一条消息,工具抓取到若干TCP数据包,其中红框标记的数据是客户端发到服务器的消息数据(多试几次就知道有效的数据是哪一条了)。 点击数据看到该条TCP消息包内容如下图。...非蓝色背景的内容可以简单理解为TCP协议的消息头(我们自定义的数据可以算作TCP协议的消息体)。...重点分析蓝色背景区域,消息前4个字节是消息头长度 headLength headLength,4字节,TCP包内容为"00 00 00 14",将16进制转换为10进制为20。
同时,Wireshark 具有丰富的功能集,包括: 深入检查数百个协议,并不断添加更多协议; 实时捕获和离线分析; 支持 Windows、Linux、macOS、Solaris、FreeBSD...…… Wireshark 的主页:https://www.wireshark.org/download.html下载 Wireshark 那如何通过wireshark进行 TCP 抓包和调试?...而且 Whireshark 在 macOS、Linux、Windows 上的操作都是一致的,打开 Wireshark 会先看到如下图所示的一个选择网络接口的界面。 ?...Linux 下可以使用ifconfig指令看到所有的网络接口,Windows 下则使用 ipconfig。可以看到,上图中有很多网络接口,目前我连接路由器的接口是以太网 2。...TLS 是建立在 TCP 之上,复用了 TCP 的逻辑。
初始化界面 登录界面显示信息主要有系统版本、Linux内核版本两个内容 图片登录界面显示登录用户、上次登录时间及IP相关信息图片基本说明[root@money ~]#root表示当前登录用户,money...[root@money ~]# hostname ##查看主机名称 money [root@money ~]# pwd ##查看当前路径 /root 注:命令行提示符具体是由...:调出上一个命令最后一个空格后面的内容命令行基本格式:命令 [选项] [路径/文件/目录]命令使用基本帮助:百度,命令具体使用自行百度使用Linux内置命令查看基本使用,格式为命令 --help或man
GDB调试 GDB是GUN发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。 安装GDB 注意安装你所需要的版本。...gcc -g hello.c -o hello 启动GDB调试。 gdb hello GDB和Shell一样支持命令补全。。...help breakpoints ---- 设置断点 break break命令用于设置断点,命令行接受行号或者函数名作为参数。...s ---- 监视变量 print 调试程序最基本的需求就是监视变量的值,可以使用print命令,缩写为p,显示指定变量的值。...bt ---- 退出GDB quit 调试完毕后,使用quit命令,缩写为q,退出gdb程序。 q
Coredump 调试 Coredump是什么?...Linux环境下,当程序异常退出(发生段错误)时,会产生一个core文件,该文件记录了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个文件...---- 如何调试 编译的时候添加-g选项,增加调试信息。 gdb program core_file **示例:**一个会产生异常退出的程序,非法指针访问。...执行调试命令,结果如下图所示。
TCP/IP协议 TCP/IP 协议栈是一系列网络协议(protocol)的总和,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。...OSI 7层模型和TCP/IP四层网络模型对应关系 计算机网路基础的知识不过多讲解,主要是让大家明白接下来的Linux网络编程数据流属于那一层,具体如下图 TCP/IP协议数据流示意图 我们接下来讲解的...Linux网络编程Tcp协议是属于传输层的协议 Linux Socket 网络编程 TCP协议 TCP是面向连接的可靠的传输层协议。...TCP编程 Linux中的网络编程是通过socket接口来进行的。socket是一种特殊的I/O接口,它也是一种文件描述符。常用于不同机器上的进程之间的通信,当然也可以实现本地机器上的进程之间通信。...使用TCP协议的流程图 根据流程图逐一讲解API接口.
交互式命令行 默认等待用户输入命令,输入一行回车后执行一行命令 效率低 适合少量的工作 shell脚本 将需要执行的命令和逻辑判断语句都写入一个文件中,一起运行 效率高 适合完成复杂,重复性工作...bash shell提示符 登录Linux系统之后,默认进入交互式的命令行界面,在光标前边会出现提示符 [root@localhost ~]# [用户名@主机名 目录名]权限标识 用户名 当前登录的用户...注意Linux会准确的识别出命令的大小写,所以大家需要注意大小写的问题。命令选项和参数之间是用空格进行分隔,请大家在输入的时候注意不要缺失空格。 学习Linux最重要的就是以下三个方面 1....whoami 用于显示自身用户名称 [root@localhost ~]# whoami root 快捷键 快捷键 作用 ^C 终止前台运行的程序 ^C 退出 等价exit ^L 清屏 ^A 光标移动到命令行的最前端...^E 光标移动到命令行的后端 ^U 删除光标前所有字符 ^K 删除光标后所有字符 ^K 搜索历史命令,利用关键词 帮助命令 history history [n] n为数字,列出最近的n条命令 选项
以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。 目前觉得比较重要的就是: 1.设置断点: gdb命令 break,也可以用 b 。...取消的话 undisplay 编号 4.列出信息 gdb命令 info,info break, info display 5.调试 单步调试 n,进入函数的单步调试 s,跳到下一个断点 c 6.读取文件
一、环境介绍 操作系统: win10 64位 QT版本: QT5.12.6 编译器: MinGW 32 TCP网络调试助手,在网络相关开发、嵌入式开发里使用较多,主要用来测试网络传输,调试等等。...这个版本设计的比较早,没有加入多线程处理连接上来的客户端,一般的调试场景已经满足。对于基本的QT网络开发入门学习借鉴已经足够了。...创建本地客户端TCP套接字*/ LocalTcpClientSocket = new QTcpSocket; /*2....网络协议调试!...\n" "暂不支持UDP协议调试!
wide': 0 tcp:tcp_retransmit_skb...0 tcp:tcp_send_reset 0 tcp:tcp_receive_reset...5 tcp:tcp_rcv_space_adjust...0 tcp:tcp_retransmit_synack 9 tcp:tcp_probe...] [k] tcp_rcv_state_process + 50.00% 0.00% python [kernel.kallsyms] [k] __tcp_transmit_skb
其中复位标志RST的作用就是“复位相应的TCP连接”。 TCP连接和释放时还有许多细节,比如半连接状态、半关闭状态等。详情请参考这方面的巨著《TCP/IP详解》和《UNIX网络编程》。...原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不在发送也不接受数据了。...; 客户端和服务器统一使用TCP短连接。...然后是客户端和服务器统一使用TCP长连接:客户端使用TCP长连接很容易配置(直接设置HttpClient就好),而服务器配置长连接就比较麻烦了,就拿tomcat来说,需要设置tomcat的maxKeepAliveRequests...,固定5分钟tcp连接回收,而且发现连接出错时,重发之前10s内消息。
all:server_tcp client_tcp server_tcp:UdpServerMain.cc g++ -o $@ $^ -std=c++17 -lpthread client_tcp...函数原型(C/C++) 在 POSIX 系统(如 Linux)中,listen 函数的原型如下: int listen(int sockfd, int backlog); 在 Windows 系统中,listen...函数原型(C/C++) 在 POSIX 系统(如 Linux)中,accept 函数的原型如下: int accept(int sockfd, struct sockaddr *addr, socklen_t...EchoServer -- 线程池 引入我们之前写的【Linux】:线程库 Thread.hpp 简单封装 Thread.hpp 以及 单例模式下的【Linux】:日志策略 + 线程池(单例模式 Threadpool.hpp...private: std::set _white_list; // 白名单,只让执行一些命令 }; 执行结果如下: 8. windows 作为 client 访问 Linux
TCP socket API 详解 下面介绍程序中用到的 socket API,这些函数都在 sys/socket.h 中。...应用程序可以像读写文件一样用 read/write 在网络上收发数据; 返回值:如果 socket()调用出错则返回-1; 参数:对于 IPv4, family 参数指定为 AF_INET; 对于 TCP...Echo Server 有了上面的接口,我们就可以实现以TCP为基础的简单消息回显服务器了,运行结果应该如下图所示: 代码如下: TCP服务器 #pragma once #include <iostream...port(port), _listensockfd(-1), _isruning(false) { } void InitServer() { // 1.创建Tcp..."; } } ::close(sockfd); return 0; } 与UDP客户端相比,TCP客户端需要与服务器通过connet连接后才能通信。
adb wifi 调试方法(命令行方式) 插件方式不说了,因为命令行方式很简便 一、首先必须保证你的手机和电脑连接的是同一个 wifi,这点不用说吧 二、连接手机,并打开 电脑 TCP 模式 *...只需这一次用 USB 连接电脑 * 怎么打开 TCP 模式:在terminal 中输入下方命令即可 adb tcpip 5555 我的结果 显示并没有切换到 5555 端口,不过没有显示报错即可
引言 TCP协议是传输层中非常重要的协议。本篇博客我们将从TCP头部信息、TCP状态转移、TCP数据流、TCP数据流的控制等等方面来讨论! 在TCP协议中,通信双方的地位是平等的。...1、TCP协议的特点 传输层中我们常用的协议有两个:TCP协议和UDP协议。TCP协议相对于UDP协议的特点是:面向连接、可靠的、面向字节流的。...当TCP模块真正开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或者多个TCP报文发出去,因此,TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数没有固定的数量关系。...当接收缓冲区收到一个或者多个TCP报文后,TCP模块将它们携带的应用程序的数据按照TCP报文的序号【见下文】依次放入TCP接收缓冲区中,并通知应用程序读取数据。...Linux中(BSD Unix和Windows也是如此), 超时以500ms为一个单位进行控制, 每次判定超时重发的超时 时间都是500ms的整数倍.
一、命令行的介绍 命令行界面(英语:command-line interface,缩写:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后...通常认为,命令行界面(CLI)没有图形用户界面GUI那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。...在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。...另外Linux 系统的优势基因还是快速、批量、自动化、智能化管理系统及处理业务。和Windows系统使用鼠标点击的可视化管理大不相同 ,Linux通过键盘输入指令就可以完成管理系统的相关操作。...五、视频学习 视频:linux命令介绍 视频:linux常用命令
领取专属 10元无门槛券
手把手带您无忧上云