xtrabackup备份原理其实到处都能找到, 也有很多源码解读的, 但是都不太直观, 所以本文使用GDB查看下xtrabacup的备份流程(仅全备流程) 写在前面 gdb的基础使用可以看前面的文章:...info threads 查看线程信息, 带*的表示是当前的线程 thread n 切换到第n个线程 run 运行程序 环境准备 gdb OS自带的即可, 本文:7.6.1-120.el7 xtrabackup...开始GDB 进入GDB 打断点 假设不熟悉xtrabackup的源码, 那我们直接断点main吧 gdb `which xtrabackup` break main 图片 运行程序 如果你下载了源码,...可以设置下路径, 方便gdb查看源码 set substitute-path /mnt/workspace/percona-xtrabackup-2.4-binary-tarball/label_exp...因为xtrabackup是利用的redo记录备份期间的数据变化的, Mysqldump是以事务(--single-transaction)去保证数据一致的 4.
AFTER_SYNC(默认) 和 AFTER_COMMIT 其实从名字就可以看出来: 前者是在SYNC完成之后的阶段等待从库ACK, 后者是在commit阶段完成之后等待从库ACK写在前面本文主要是用GDB...感兴趣的自己去模拟.GDB的使用可以看前面的文章https://cloud.tencent.com/developer/article/2226040环境准备搭建半同步复制主从搭建(略)完成之后, 主从执行如下...192.168.101.21 and dst host 192.168.101.19) or (src host 192.168.101.19 and dst host 192.168.101.21))' -XGDB查看过程分为两种情况...瞧瞧图片gdb观察既然是after sync, 那sync阶段直接finish....然后next往后走图片当binlog写完之后, 从库就已经收到数据了, 并返回ACK了.
前言 在启动调试以及设置断点之后,就到了我们非常关键的一步-查看变量。GDB调试最大的目的之一就是走查代码,查看运行结果是否符合预期。...准备工作 在查看变量之前,需要先启动调试并设置断点,该部分内容可参考《GDB调试指南-启动调试》和《GDB调试指南-断点设置》。后面的内容都基于在某个位置已经断住。...或者@后面跟上变量值: (gdb) p *d@a $2 = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} (gdb) 由于a的值为10,并且是作为整型指针数据长度,因此后面可以直接跟着...按照特定格式打印变量 对于简单的数据,print默认的打印方式已经足够了,它会根据变量类型的格式打印出来,但是有时候这还不够,我们需要更多的格式控制。...e $2 = 1000 (gdb) 那么就需要另外一种查看方式了。
前言 我们在调试过程中难免要对照源码进行查看,如果已经开始了调试,而查看源码或者编辑源码却要另外打开一个窗口,那未免显得太麻烦。文本将会介绍如何在GDB调试模式下查看源码或对源码进行编辑。...) 来查看指定文件指定行,或者指定文件指定函数: (gdb) l test.c:printNum1 9 n--; 10 } 11 } 12 13...) 指定源码路径 在查看源码之前,首先要确保我们的程序能够关联到源码,一般来说,我们在自己的机器上加上-g参数编译完之后,使用gdb都能查看到源码,但是如果出现下面的情况呢?...(gdb) 设置完成后,可以通过show substitute-path来查看设置结果。这样它也能在正确的路径查找源码啦。...GDB-TUI 但是本文不作介绍,有兴趣的可以探索一下。 总结 本文介绍了GDB调试中的源码查看,源码编辑以及如何在GDB调试模式下执行shell命令。
在你调试程序时,当程序被停住时,你可以使用print命令(简写命令为p),或是同义命令inspect来查看当前程序的运行数据。...关于编译器的参数,还请查看编译器的使用说明文档。 三、数组 有时候,你需要查看一段连续的内存空间的值。比如数组的一段,或是动态分配的数据的大小。...show print static-members 查看静态数据成员选项设置。 set print vtbl 当此选项打开时,GDB将用比较规整的格式来显示虚函数表时。其默认是关闭的。...show print vtbl 查看虚函数显示格式的选项。 八、历史记录 当你用GDB的print查看程序运行时的数据时,你每一个print都会被GDB记录下来。...九、GDB环境变量 你可以在GDB的调试环境中定义自己的变量,用来保存一些调试程序中的运行数据。要定义一个GDB的变量很简单只需。使用GDB的set命令。GDB的环境变量和UNIX一样,也是以$起头。
gdb没有CodeWarrior强大,但是也提供了查看寄存器的命令: (gdb) info register r1 r1 0xbffffb40 3221224256 (gdb...spefscr 0x3c 60 orig_r3 0x1 1 trap 0x700 1792 你可以使用examine命令(简写是x)来查看内存地址中的值...输出格式 一般来说,GDB会根据变量的类型输出变量的值。但你也可以自定义GDB的输出的格式。例如,你想输出一个整数的十六进制,或是二进制来查看这个整型变量 的中的位的情况。...要做到这样,你可以使用GDB的数据显示格式: x 按十六进制格式显示变量。 d 按十进制格式显示变量。 u 按十六进制格式显示无符号整型。 o 按八进制格式显示变量。 t 按二进制格式显示变量。...(gdb) x /1fw 0x100109d8 0x100109d8 : 39.2314987 (gdb) p x $1 = 39.2314987 (gdb) p z $2 = 39.231499999999997
(如:set args 10 20 30 40 50 ) show args 命令可以查看设置好的运行参数。 ...continue 继续运行程序,可简写为c 9 查看运行时数据 print 打印变量、字符串、表达式等的值,可简写为p p count 打印count的值 10 自动显示 ...相关的GDB命令是display。 display 变量名 info display -- 查看display设置的自动显示的信息。 ...查看修改变量的值 (gdb) ptype width -- 查看变量width的类型 type = double (gdb) p width -- 打印变量width...当程序停下来以后, GDB会报告程序停在了那个文件的第几行上。你可以用list命令来打印程序的源代码。默认打印10行,还是来看一看查看源代码的GDB命令吧。
本文链接:https://blog.csdn.net/weixin_40313634/article/details/88619906 实验楼值GDB常用命令实战课程学习记录 1....安装工具: sudo apt-get install gdb 2. 编译可调式程序: gcc bugging.c -o bugging -g -m32 -o: 生成的可执行文件的名字。...-g: 生成的程序允许gdb 调试。 -m32:生成32位的程序。默认,程序位数和OS位数相同。 编译32位程序时报错:fatal error: sys/cdefs.h: 没有那个文件或目录。...调试: 开始调试:gdb bugging 结束调试:quit 断点在循环中时: enable once Num // 断点hit 一次后,失效。...打印当前函数的所有局部变量的值: info locals 命令 简写 说明 list l 查看附近源码 next n 执行下一步 step s 一次执行一行,遇到函数会进入 break b 设置断点
1:gdb打印动态数组: x=(int*)malloc(25*sizeof(int)); p *x@25 或者 p (int [25])*x 完整打印字符串的值: set print elements
还是gdb方便点, 为了方便低版本gdb的环境, 这里就不升级gdb了.高版本的是彩色的, 方便看, 有条件的可以安装下:https://www.sourceware.org/gdb/环境:gdb:7.6.1...可以设置下 set listsize 30fi finish 结束当前正在执行的frame(就是bt最上面那个) bt backtrace 查看函数调用...(backtrace查看) set set 设置变量的值 attach attach...开始查看提交过程我们看到自动切换到了新连接的线程,并触发了breakpoint 1图片此时, 代码就停在trans_commit处, 可以使用bt查看frame信息, 也可以step/next运行代码...commit也可以的.图片进去后是MYSQL_BIN_LOG (两阶段提交的CN角色)注:没开启binlog的时候, CN是tc_log_mmap/tc_log_dummy(都是继承自tc_log)图片查看源码
GDB官方文档:GDB Documentation 如下图所示: ?...官网提供了PDF、HTML各种版本,如下: Debugging with GDB gdb.pdf.gz 2638 KB gdb.dvi.gz 1033 KB gdb.ps.gz 1499 KB gdb.html.tar.gz
01.gdb使用 程序的发布方式有两种,debug模式和release模式 Linux gcc/g++出来的二进制程序,默认是release模式 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上...通过这个命令,你可以查看包含在 ELF 文件中的不同节(section),这些节可能包括代码段、数据段、符号表、字符串表等 #include int AddToTarget(int a...\n"); return 0; } gdb binFile 退出: ctrl + d 或 quit 调试命令: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。...break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点 info break ( i b ):查看断点信息。...info(i) locals:查看当前栈帧局部变量的值 quit:退出gdb
方式五:对运行中的a.out,可以先按方式二启动,然后在gdb中中心“attach 19475”调试运行中的a.out 进入到GDB后,可以通过help命令来获取帮助,GDB对命令做了分类,要获取详细说明可以查看...GDB提供了相关命令查看和设置变量。...的print命令查看状态时,GDB会以$1,$2这样的编号标记之前的表达式,这些编号称为值历史。...问题二:段错误 写C、C++代码最常见的问题是对内存的不当处理,最常见的莫过于段错误,典型的如访问不存在的内存地址、访问了不允许访问的地址(试图往只读的位置写数据)。常见产生的原因:1....地址保护:在mmap做内存映射时,如果尝试往只读的映射区写入数据会导致段错误。 问题三:总线错误 在开发中出发总线错误的两个常见场景:1.
GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb的help查看。 gdb技巧 1. gdb小技巧汇总 gdb技巧挺多的,比如说直接回车是继续执行上一次的代码 巧用tab补全 1....比如输入b连续按下两次tab,可以查看gdb的所有b开头的gdb指令 2....TUI 模式:GDB 的界面会分为几个窗格,包括源代码窗格、汇编窗格、寄存器窗格等。 按下ctrl x a会显示下图的窗口(可以上下滑动查看原代码),其中箭头表示【当前准备执行但还未执行的开始位置】。...查看断点信息 info b info b 与 i b等价 前面我们知道进入函数单步执行用到的gdb指令是 s 退出函数用到的gdb指令是 finish finish finish 不与 f等价 finish...功能是退出函数 f功能是查看当前执行的位置
GDB高级技巧 yijian 2009-2-22 难得有雅兴,边动手边记录操作步骤,本文主要示例一些平常较少使用到的GDB功能,掌握这些用法有助于提高GDB调试和解决问题的能力。...1) 查看宏 默认情况下,在GDB中是不能查看宏的值及定义的,但通过如下方法,则可以达到目的: 编译源代码时,加上“-g3 -gdwarf-2”选项,请注意不是“-g”,必须为“-g3”,查看宏的值使用命令...p,这和查看变量的值的方法相同,如果想查看宏的定义,使用“macro expand”命令即可 2) 如果执行一连串命令?.../loop_break/loop_continue,如: (gdb) set $x=1 (gdb) while $x==1 >p $x >set $x=0 >p $x >end -...”查看说明
gdb调试 能进行GDB调试,一般在编译过程中,需使用-g参数。如果不使用-g参数,则在gdb调试过程中,将不能得到程序的函数名、变量名等信息,而只能看见运行时内存地址。...主要用于汇编调试 b * // 停在代码的某个地址处 d // 删除断点 info b // 查看断点 r:运行被调试的程序。...display …:设置程序中断后想显示的数据及其格式。...q:退出gdb调试环境。 help [命令名称]:gdb帮助命令,提供对GDB各种命令的解释说明。...如果指定了“命令名称”参数,则显示该命令的详细说明;若果没有指定参数,则分类显示所有GDB命令,共用户进一步浏览和查询。 cd dir:运行GDB,使用dir作为gdb的工作目录。
(gdb) n p Print 的缩写, 打印变量的值 (gdb) p i bt Backtrace 的缩写,查看堆栈信息 (gdb) bt q Quit 的缩写,退出gdb 调试环境...(gdb) q help 可以查看各个命令的用法 (gdb) help r 举例 先看一个简单的程序 #include int sum(int n) { int...文件,然后用 gcc 编译: gcc gdb_sample.c -g -o gdb_sample 上面的命令,用参数 -g将源代码信息编译到可执行文件中,如果不指定,将无法在 gdb 里面查看代码,可以看看使用...(gdb) 上面表示可执行文件已经加载成功,(gdb) 是gdb内部命令引导符,等待用户输入命令 下面使用l 命令来查看源码,可以指定行号,回车可以继续往下查看: (gdb) l 1 1...int sum=0, i; (gdb) bt // 查看堆栈信息 #0 sum (n=2) at
基本操作 命令 说明 gdb exceFile 不带命令行参数 gdb -args execFile arg0 ... argn 带命令行参数 r 开始执行(run的简写)。...p是print的缩写 多进程/多线程 命令 说明 set follow-fork-mode child 设置fork之后跟踪子进程,而默认是父进程 info thread 查看当前调试进程的线程信息...正在执行的gdb可以使用source ~/.gdbinit。
基本操作命令: 这里只介绍常用命令的简单用法,如需读者想更加深入的了解,还请读者参照gdb手册。也可以使用--help查看。...q print 输出当前指定变量的值 p break 在代码里设置断点 b info break 查看设置断点的信息 i b delete 删除设置的断点 d watch 监视一个变量的值,一旦值有变化...Reading symbols from /opt/c++/test...done. 3)list命令 也可以过回车查看源代码 (gdb) list 1 #include 2 #include...printf("hello %d\n", i); (gdb) 进入到了函数 prints 在函数中有几种查看状态的办法,backtrace命令(简写为bt)可以查看函数调用的栈帧: (gdb)...6)在可以用info命令(简写为i)查看局部变量 i locals 如果想查看main函数当前局部变量的值也可以做到,先用frame命令(简写为f)选择1号栈帧然后再查看局部变量: (gdb) f
以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。 目前觉得比较重要的就是: 1.设置断点: gdb命令 break,也可以用 b 。...比如, b cyc::TcpClient::onMessage 2.查看参数 gdb命令 print,也可以 p。方法 p para.显示一次。...3.一直显示 gdb命令 display,方法 display para。...取消的话 undisplay 编号 4.列出信息 gdb命令 info,info break, info display 5.调试 单步调试 n,进入函数的单步调试 s,跳到下一个断点 c 6.读取文件...gdb命令 file , file path. 7.执行 gdb 命令 run, run args. 8.显示代码 gdb 命令 list,list [行号] 之后可以按 Enter 继续显示
领取专属 10元无门槛券
手把手带您无忧上云