美文网首页
gdb调试分布式数据库TiDB

gdb调试分布式数据库TiDB

作者: zhangboo的程序猿之路 | 来源:发表于2018-12-06 21:42 被阅读0次

gdb在分布式工程调试的方面很强大,因此用他来初步设断点调试一下TiDB
调试需要先部署TiDB环境,本文使用的是Docker-compose快速部署TiDB


gdb调试

首先启动TiDB,使用Mysql客户端连接TiDB服务器
启动TiDB参考之前文章


查看当前进程

ps -el | grep server

ps命令查看当前进程,参数e为显示所有进程,l为显示长列表
grep命令找到带server的进程

TiDB成功启动

有三个进程

  • tidb-server
  • pd-server
  • kv-server

My客户端连接

确保Mysql客户端能连接到TIDB上
登陆Mysql

mysql -h 127.0.0.1 -P 4000 -u root

  • -P为端口号
  • -u为连接的用户

gdb知识

① 如何进入gdb ?
|- gdb attach processID(注意此processID的程序的编译选项必须有-g,即有调试信息,即程序的可执行文件(.o)为debug版
② 如何添加断点 ?
|- 添加断点可使用:b 源文件(***.cpp):具体代码行(大于0,小于源文件代码行)
|- 添加断点请详细查阅当前调试程序的源代码版本,调试程序和源代码必须是同一版。
|- 添加断点请查阅具体版本代码
|- 可以使用如下命令查看短信信息
|- info breakpoints
③ 执行到断点处,如何查看信息 ?
|- 断点可查阅的信息与当前context有关,可以对照源代码断点位置,查阅可查看变量信息
|-可以如下命令打印变量
|- print 变量名
|- p 变量名
|- bt 可查阅当前栈信息
④ 执行到断点处,如何继续执行 ?
|- 执行到断点处,可以使用命令:n即next,执行程序(源代码而非指令)下一行
|- 执行到断点处,也可以使用命令:c即continue,执行程序,除非遇到断点,否者将不暂停
⑤ 如何退出gdb ?
|- 使用命令:q,即可退出gdb

gdb调试

打开新的终端执行命令进入gdb调试

gdb

gdb绑定进程
使用ps命令已经查看到启动的进程,绑定tidb-server测试

attach 2946

更改gdb调试目录

dir /home/zhangboo/goProject/src/github.com/pingcap/tidb

tidb目录下存放的就是对应代码的目录

设置断点

b builder.go:15

上述命令表示在builder.go的15行处设置断点

进入mysql客户端,连接数据库,随机测试一条命令,在断点处停下

使用bt查看当前栈的信息
使用c进行单步调试

gdb常见命令

break NUM 在指定的行上设置断点。
bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而
导致停止运行时。
display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
file FILE 装载指定的可执行文件进行调试。
help NAME 显示指定命令的帮助信息。
info break 显示当前断点清单,包括到达断点处的次数等。
info files 显示被调试文件的详细信息。
info func 显示所有的函数名称。
info local 显示当函数中的局部变量信息。
info prog 显示被调试程序的执行状态。
info var 显示所有的全局和静态变量名称。
kill 终止正被调试的程序。
list 显示源代码段。
make 在不退出 gdb 的情况下运行 make 工具。
next 在不单步执行进入其他函数的情况下,向前执行一行源代码。
print EXPR 显示表达式 EXPR 的值。

相关文章

  • gdb调试分布式数据库TiDB

    gdb在分布式工程调试的方面很强大,因此用他来初步设断点调试一下TiDB调试需要先部署TiDB环境,本文使用的是D...

  • 2. gdb的使用

    参考链接1. GDB调试2. gdb调试方法3. gdb调试示例 1. 说说 gdb gdb 是一款 UNIX 系...

  • TIDB学习总结

    TIDB介绍 1、什么是TIDB 1.1 TIDB介绍 TiDB 是一个数据库,是一个开源分布式数据库,由Ping...

  • gcc常用命令

    gdb相关 gcc加-g才能使用gdb调试gdb -tui a.out打开调试界面run/stop/continu...

  • GDB调试记录

    gdb attach 15343 # 调试某个进程 GNU gdb (GDB) 7.12Copyrigh...

  • gdb调试基本方法

    gdb调试基本方法 gdb调试常用命令 在GDB中运行程序 断点(BreakPoint) 观察点(WatchPoi...

  • GDB命令

    gdb test 启动gdb调试test可执行文件gdb att 进程名 调试某个进程b [行数]/[函数名...

  • Xcode debug Hotspot(一)——创建Xcode项

    概述 前面安装gdb调试hotspot里面,我记录了自己安装gdb调试hotspot的过程。后来我发现,使用gdb...

  • 【实践】gdb调试golang程序入门及gdb命令列表

    1. 摘要 本文讲解gdb调试GOLANG程序的入门配置,以及gdb命令详解备忘。 2. gdb调试go程序入门...

  • 用gdb调试代码

    title: 用gdb调试代码tags: gdbdate: 2017-08-09 15:09:22 gdb调试 开...

网友评论

      本文标题:gdb调试分布式数据库TiDB

      本文链接:https://www.haomeiwen.com/subject/mgowcqtx.html