随笔分类 - Linux_GDB
gdb学习笔记
摘要:点击直接跳转 第01课:调试信息与调试原理 第02课:启动GDB调试 第03课:GDB常用的调试命令概览 第04课:GDB常用命令详解(上) 第05课:GDB常用命令详解(中) 第06课:GDB 常用命令详解(下) 第07课:【实战】调试Redis准备工作 第08课:【实战】Redis网络通信模块源
阅读全文
摘要:redis-server 接收到客户端的第一条命令 redis-cli 给 redis-server 发送的第一条数据是 *1\r\n\$7\r\nCOMMAND\r\n 。我们来看下对于这条数据如何处理,单步调试一下 readQueryFromClient 调用 read 函数收取完数据,接着继续
阅读全文
摘要:侦听 fd 与客户端 fd 是如何挂载到 EPFD 上去的 同样的方式,要把一个 fd 挂载到 EPFD 上去,需要调用系统 API epoll_ctl ,搜索一下这个函数名。在文件 ae_epoll.c 中我们找到 aeApiAddEvent 函数: 当把一个 fd 绑定到 EPFD 上去的时候,
阅读全文
摘要:我们这里先研究redis-server端的网络通信模块。除去Redis本身的业务功能以外,Redis的网络通信模块实现思路和细节非常有代表性。由于网络通信模块的设计也是Linux C++后台开发一个很重要的模块,虽然网络上有很多现成的网络库,但是简单易学且可以作为典范的并不多,而redis-serv
阅读全文
摘要:7.1 Redis源码下载与编译 Redis源码下载与编译在前面已经说过了,同学们可以去第04课:GDB常用命令详解(上)学习。 编译成功后,会在src目录下生成多个可执行程序,其中redis-server和redis-cli使我们即将调试的程序,进入src目录,使用GDB启动redis-serve
阅读全文
摘要:本课的核心内容: disassemble 命令 set args 和 show args 命令 tbreak 命令 watch 命令 display 命令 6.1 disassemble 命令 当进行一些高级调试时,我们可能需要查看某段代码的汇编指令去排查问题,或者是在调试一些没有调试信息的发布版程
阅读全文
摘要:本科核心内容: info和thread命令 next、step、util、finish和return命令 5.1info和thread命令 在前面使用info break命令查看当前断点时介绍过,info命令是一个复合指令,还可以用来查看当前进程的所有线程运行情况。下面以redis-server进程
阅读全文
摘要:本课的核心内容如下: run命令 continue命令 break命令 backtrace与frame命令 info break、enable、disable和delete命令 list命令 print和ptype命令 为了结合实践,这里以调试Redis源码为例来介绍没一个命令,这里先介绍一些常用命
阅读全文
摘要:先给出一个常用命令的列表,后面结合具体的例子详细介绍每个命令的用法。 命令名称 命令缩写 命令说明 run r 运行一个程序 continue c 让暂停的程序继续运行 next n 运行到下一行 step s 如果有调用函数,进入调用函数内部,相当于step into until u 运行到指定行
阅读全文
摘要:使用GDB调试程序一般有三种方式: gdb filename gdb attach pid dgb filename corename 也对应这本节课的核心内容: 直接调试目标程序 附加进程 调试core文件 接下来我们逐一讲解。 2.1直接调试目标程序 在开发阶段或者研究别人的项目时,当编译成功生
阅读全文
摘要:Linux下C/C++程序开发,即使使用Makefile、Cmake等编译工具,其最终都是调用GCC这一编译工具组的。这里说的工具组,是因为编译C程序和C++程序使用的编译工具还是有一点差别的,一般编译C程序使用GCC,编译C++程序使用G++。(下文统一使用GCC这一名词代指)。 我使用的操作系统
阅读全文
浙公网安备 33010602011771号