第一次这么近距离的接触源码,有点兴奋,又有点不知所措,尼玛随便一个源文件都有几千行,你说怎么看,还有一些数不清的数据结构,函数,类等乱七八糟的东西。

我装的mysql版本是5.7.12,然后运行平台是centos 6.5 x64 (应该是x64)。

启动gdb

gdb --args /usr/local/mysql-5.7.12/bin/mysqld

也可以用如下,如果你设置了链接的话

gdb --args mysqld

然后你就进入了gdb的环境中

在此呢,我们可以用b 函数名来添加断点

这个个断点是我在mysqld.cc的源文件中找的一个函数,随便瞎找的一个。

然后用下面的这个命令来启动mysqld

然后就是gdb c,c的意思是继续的意思,刚刚run --defaults-file=/etc/my.cnf --user=root已经运行了,而且到达设置的断点mysqld_main

如果此时我们用另一个客户端service mysql status一下的话

发现mysql的服务并没有启动

于是我们继续在gdb中输入命令c

...

并且这里是等待模式,没有出现(gdb)

然后在另一可以客户端继续service mysql status一下的话

会发现mysql的服务已经启动了

继续在这个客户端操作,登录mysql

mysql -uroot -hlocalhost -p

发现可以成功的登录进去了

然后再看看调试环境下

可以发现出现了一个新的线程,应该是客户端连接的线程吧。

然后退出mysql,exit,发现gdb环境下没啥变化,没有说线程结束了什么的。

但是如果我们重新开一个客户端登录mysql,又会多出一个线程

关闭了客户端仍然没有发现这两个线程退出的迹象。

当在一个客户端关闭mysql服务的时候,service mysql stop,

会发现在gdb出现了这个

然后

Shutting down MySQL......................................这个点点无限循环下去

于是在gdb环境下,输入命令c

(gdb) c
Continuing.
2016-05-03T10:49:28.524672Z 0 [Note] InnoDB: page_cleaner: 1000ms intended loop took 180093ms. The settings might not be optimal. (flushed=0 and evicted=0, during the time.)
[Thread 0x7fff957fb700 (LWP 4113) exited]
[Thread 0x7fffb8c82700 (LWP 4162) exited]
2016-05-03T10:49:28.569814Z 0 [Note] Giving 0 client threads a chance to die gracefully
2016-05-03T10:49:28.569875Z 0 [Note] Shutting down slave threads
2016-05-03T10:49:28.569896Z 0 [Note] Forcefully disconnecting 0 remaining clients
2016-05-03T10:49:28.569912Z 0 [Note] Event Scheduler: Purging the queue. 0 events
[Thread 0x7fffb8cc3700 (LWP 4135) exited]
2016-05-03T10:49:28.578091Z 0 [Note] Binlog end
2016-05-03T10:49:28.581076Z 0 [Note] Shutting down plugin 'ngram'
2016-05-03T10:49:28.581127Z 0 [Note] Shutting down plugin 'ARCHIVE'
2016-05-03T10:49:28.581135Z 0 [Note] Shutting down plugin 'partition'
2016-05-03T10:49:28.581139Z 0 [Note] Shutting down plugin 'BLACKHOLE'
2016-05-03T10:49:28.581170Z 0 [Note] Shutting down plugin 'CSV'
2016-05-03T10:49:28.581180Z 0 [Note] Shutting down plugin 'MEMORY'
2016-05-03T10:49:28.581189Z 0 [Note] Shutting down plugin 'MyISAM'
2016-05-03T10:49:28.581240Z 0 [Note] Shutting down plugin 'MRG_MYISAM'
2016-05-03T10:49:28.581250Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA'
2016-05-03T10:49:28.581321Z 0 [Note] Shutting down plugin 'INNODB_SYS_VIRTUAL'
2016-05-03T10:49:28.581337Z 0 [Note] Shutting down plugin 'INNODB_SYS_DATAFILES'
2016-05-03T10:49:28.581341Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESPACES'
2016-05-03T10:49:28.581345Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN_COLS'
2016-05-03T10:49:28.581349Z 0 [Note] Shutting down plugin 'INNODB_SYS_FOREIGN'
2016-05-03T10:49:28.581352Z 0 [Note] Shutting down plugin 'INNODB_SYS_FIELDS'
2016-05-03T10:49:28.581356Z 0 [Note] Shutting down plugin 'INNODB_SYS_COLUMNS'
2016-05-03T10:49:28.581363Z 0 [Note] Shutting down plugin 'INNODB_SYS_INDEXES'
2016-05-03T10:49:28.581367Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLESTATS'
2016-05-03T10:49:28.581370Z 0 [Note] Shutting down plugin 'INNODB_SYS_TABLES'
2016-05-03T10:49:28.581374Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_TABLE'
2016-05-03T10:49:28.581377Z 0 [Note] Shutting down plugin 'INNODB_FT_INDEX_CACHE'
2016-05-03T10:49:28.581381Z 0 [Note] Shutting down plugin 'INNODB_FT_CONFIG'
2016-05-03T10:49:28.581411Z 0 [Note] Shutting down plugin 'INNODB_FT_BEING_DELETED'
2016-05-03T10:49:28.581417Z 0 [Note] Shutting down plugin 'INNODB_FT_DELETED'
2016-05-03T10:49:28.581420Z 0 [Note] Shutting down plugin 'INNODB_FT_DEFAULT_STOPWORD'
2016-05-03T10:49:28.581424Z 0 [Note] Shutting down plugin 'INNODB_METRICS'
2016-05-03T10:49:28.581428Z 0 [Note] Shutting down plugin 'INNODB_TEMP_TABLE_INFO'
2016-05-03T10:49:28.581431Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_POOL_STATS'
2016-05-03T10:49:28.581435Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE_LRU'
2016-05-03T10:49:28.581438Z 0 [Note] Shutting down plugin 'INNODB_BUFFER_PAGE'
2016-05-03T10:49:28.581442Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX_RESET'
2016-05-03T10:49:28.581445Z 0 [Note] Shutting down plugin 'INNODB_CMP_PER_INDEX'
2016-05-03T10:49:28.581449Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM_RESET'
2016-05-03T10:49:28.581452Z 0 [Note] Shutting down plugin 'INNODB_CMPMEM'
2016-05-03T10:49:28.581456Z 0 [Note] Shutting down plugin 'INNODB_CMP_RESET'
2016-05-03T10:49:28.581459Z 0 [Note] Shutting down plugin 'INNODB_CMP'
2016-05-03T10:49:28.581463Z 0 [Note] Shutting down plugin 'INNODB_LOCK_WAITS'
2016-05-03T10:49:28.581466Z 0 [Note] Shutting down plugin 'INNODB_LOCKS'
2016-05-03T10:49:28.581470Z 0 [Note] Shutting down plugin 'INNODB_TRX'
2016-05-03T10:49:28.581473Z 0 [Note] Shutting down plugin 'InnoDB'
[Thread 0x7fffb8d04700 (LWP 4112) exited]
2016-05-03T10:49:28.581822Z 0 [Note] InnoDB: FTS optimize thread exiting.
2016-05-03T10:49:28.590938Z 0 [Note] InnoDB: Starting shutdown...
[Thread 0x7fff96bfd700 (LWP 4110) exited]
[Thread 0x7fff975fe700 (LWP 4109) exited]
2016-05-03T10:49:28.691896Z 0 [Note] InnoDB: Dumping buffer pool(s) to /usr/local/mysql-5.7.12/data/ib_buffer_pool
2016-05-03T10:49:28.692817Z 0 [Note] InnoDB: Buffer pool(s) dump completed at 160503 18:49:28
[Thread 0x7fffb0dbd700 (LWP 4101) exited]
[Thread 0x7fff961fc700 (LWP 4111) exited]
[Thread 0x7fffb17be700 (LWP 4100) exited]
[Thread 0x7fff97fff700 (LWP 4108) exited]
[Thread 0x7fffabfff700 (LWP 4102) exited]
[Thread 0x7fffa8dfa700 (LWP 4107) exited]
[Thread 0x7fffaabfd700 (LWP 4104) exited]
[Thread 0x7fffa97fb700 (LWP 4106) exited]
[Thread 0x7fffaa1fc700 (LWP 4105) exited]
[Thread 0x7fffb23e5700 (LWP 4098) exited]
[Thread 0x7fffab5fe700 (LWP 4103) exited]
[Thread 0x7fffb37e7700 (LWP 4096) exited]
[Thread 0x7fffb2de6700 (LWP 4097) exited]
[Thread 0x7fffb87ef700 (LWP 4088) exited]
[Thread 0x7fffb41e8700 (LWP 4095) exited]
[Thread 0x7fffb4be9700 (LWP 4094) exited]
[Thread 0x7fffb55ea700 (LWP 4093) exited]
[Thread 0x7fffb69ec700 (LWP 4091) exited]
[Thread 0x7fffb5feb700 (LWP 4092) exited]
[Thread 0x7fffb73ed700 (LWP 4090) exited]
[Thread 0x7fffb7dee700 (LWP 4089) exited]
2016-05-03T10:49:29.967622Z 0 [Note] InnoDB: Shutdown completed; log sequence number 2739027
2016-05-03T10:49:29.970363Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2016-05-03T10:49:29.970416Z 0 [Note] Shutting down plugin 'sha256_password'
2016-05-03T10:49:29.970422Z 0 [Note] Shutting down plugin 'mysql_native_password'
2016-05-03T10:49:29.970683Z 0 [Note] Shutting down plugin 'binlog'
2016-05-03T10:49:29.971711Z 0 [Note] /usr/local/mysql-5.7.12/bin/mysqld: Shutdown complete [Thread 0x7fffeeeec700 (LWP 4087) exited] Program exited normally.
(gdb)

然后即使就是程序退出是的各种动作,哗啦啦一片。

然后再看那个关闭mysql服务的客户端

可以发现mysql服务已经彻底关闭了。

上面是初次用gdb来运行mysqld的过程,只能算是初涉吧。

mysql初步调试的更多相关文章

  1. MySql初步II

    [MySql初步II] 1.Order By 你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列. 默认情况下,它是按升排列. 实例: 2.Join语法 Join不是一个关键字 ...

  2. mysql存储过程调试方法

    有如下一个存储过程 ), i_length ),OUT o_result INT) BEGIN SET @a= NULL; SET @b= NULL; SELECT id INTO @a FROM t ...

  3. CentOS下Mysql安装调试

    一.安装   yum安装:yum install -y mysql-server mysql mysql-devel 设置自启动:chkconfig mysqld on 启动MySQL:service ...

  4. MYSQL存储过程调试过程

     mysql不像oracle有plsqldevelper工具用来调试存储过程,所以有几种简单的方式追踪执行过程: 1.用一张临时表,记录调试过程: 2.直接在存储过程中,增加select xxx,在控 ...

  5. MySQL初步笔记,有待整理

     查询表纪录: select * from tb1; 插入一条记录 insert tb1 values(value1,value2,...); 修改表的默认编码: alter table tb1 ch ...

  6. MySQL初步研究数据库

    我用的是环境Win7.开始学习PHP和MySQL,而买了这<Head First PHP & MySQL>,从能Head First Labs官网获得HeadFirst系列书籍的相 ...

  7. mysql初步学习

    1.insert_select 的使用:从一个表复制数据给另一个表 INSERT INTO students(name,sex,LikeBooksNUM,LikesportNUM,average) S ...

  8. MySQL初步

    一 写在开头1.1 本节内容本节的主要内容是MySQL的基本操作(来自MySQL 5.7官方文档). 1.2 工具准备一台装好了mysql的ubuntu 16.04 LTS机器. 二 MySQL的连接 ...

  9. mysql开启调试日志general_log开启跟踪日志

    general_log = 1 general_log_file = /tmp/umail_mysql.log 有时候,不清楚程序执行了什么sql语句,但是又要排除错误,找不到原因的情况下, 可以在m ...

随机推荐

  1. hdoj 2199 Can you solve this equation? 【二分枚举】

    题意:给出一个数让你求出等于这个数的x 策略:如题. 由于整个式子是单调递增的.所以能够用二分. 要注意到精度. 代码: #include <stdio.h> #include <s ...

  2. 使用 Eclipse 远程调试 Java 应用程序

    Eclipse 中的远程调试特性 Eclipse 是一个图形化 Java 调试器前端.JDI 在 org.eclipse.jdt.debug 包中实现.本文不详细讨论 JDI 实现.参见 参考资料 获 ...

  3. iOS实现在webview页面内点击链接,跳转指定App

    早上和UI刚谈到这个需求,然后自己试了一下,发现还是蛮简单的,记录一下: 思路分析: iOS内应用之间跳转都会用到 URL Schemes这个东西,简单的讲,这个就是用来定义app身份的一个id识别, ...

  4. HDUOJ--4565 So Easy!

    So Easy! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  5. VC6.0设置注释快捷键

    第一步:工具栏上右键选择Customize(定制),选择“Add-ins and Macro Files(附加项和宏文件)”页,把SAMPLE前面打上钩. 第二步:选择“Commands(命令)”页, ...

  6. 二叉搜索树 C语言实现

    1.二叉搜索树基本概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是一棵具有如下特性的非空二叉树: (1)若它的左子树非空,则左子树上所有结点的关键字均小于根结点的关键字: (2)若它的右子树非 ...

  7. HDU 2256 Problem of Precision (矩阵乘法)

    Problem of Precision Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  8. read/write函数与(非)阻塞I/O的概念

    一.read/write 函数 read函数从打开的设备或文件中读取数据. #include <unistd.h> ssize_t read(int fd, void *buf, size ...

  9. Python tan() 函数

    描述 tan() 返回x弧度的正弦值. 语法 以下是 tan() 方法的语法: import math math.tan(x) 注意:tan()是不能直接访问的,需要导入 math 模块,然后通过 m ...

  10. js面向对象编程:this究竟代表什么?

    在js中this的使用方法非常让人迷惑.有些像Java或者C#中的this,但又不全然一样.依照流行的说法this总是指向调用方法的对象. 1.纯粹函数调用. function ListCommon2 ...