狠狠撸

狠狠撸Share a Scribd company logo
1
What is Dbug?
a cc++ program debugging package
by Fred Fish.
http://dbug.sourceforge.net
mysql使用dbug来调试跟踪源代码
2
1.Dbug特点
内核级别 debugger
对性能影响小(小于10%)
一些很方便调试的功能(跟踪函数流程打印所有变量值等等)
2.Dbug的使用
1.下载dbug源码
2.将dbug.h和dbug.c与你的程序源码放在一起
3.在你的源码中include “dbug.h”
4.在你的源码中使用dbug吧
3
Dbug示例:
#include "dbug.h"
#include <stdio.h>
static void sub2 (char *arg)
{
DBUG_ENTER ("sub2");
DBUG_PRINT ("info", ("Got argument: '%s'", arg));
printf ("%sn", arg);
DBUG_VOID_RETURN;
}
static int sub1 (void)
{
DBUG_ENTER ("sub1");
sub2 ("Hello world!");
sub2 ("Hello earth!");
sub2 ("Hello programmer!");
DBUG_RETURN (0);
}
int main ()
{
int ret = 0;
DBUG_PUSH ("d:t:O");
ret = sub1 ();
DBUG_PRINT ("info", ("Returned value: %d",
ret));
return 0;
}
4
Dbug示例:
编译执行:
gcc example.c dbug.c -o exp
./exp
输出:
>sub1
| >sub2
| | info: Got argument: 'Hello world!'
Hello world!
| <sub2
| >sub2
| | info: Got argument: 'Hello earth!'
Hello earth!
| <sub2
| >sub2
| | info: Got argument: 'Hello programmer!'
Hello programmer!
| <sub2
<sub1
info: Returned value: 0
5
Dbug package提供的一些方法(仅列出最常用的):
DBUG_ENTER
进入函数时调用,参数是一个字符串.且必须要有一个DBUG_RETURN相配对.
EX: DBUG_ENTER ("main");
DBUG_RETURN
退出某个函数时调用,参数是返回值.
EX: DBUG_RETURN (value);
EX:DBUG_VOID_RETURN; (无返回值时)
DBUG_PRINT
最常用,输出信息.两个参数,第一个参数是一个keyword,第二个参数是printf的
format string.
EX: DBUG_PRINT ("eof", ("end of file found"));
EX: DBUG_PRINT ("type", ("type is %x", type));
EX: DBUG_PRINT ("stp", ("%x -> %s", stp, stp -> name));
6
MySQL中的Dbug
在MySQL的源码中,大量使用了dbug来跟踪调试代码:
mysql默认已经在代码中的很多地方都加上了DBUG_XX了,而且很详细.
如:
1.在很多函数的入口加上了DBUG_ENTER(“函数名”)
2.在一些地方DBUG_PRINT()打印输入重要变量的值.
你也可以自己在需要的地方添加DBUG_XX,来观察你所关心的信息.(添加完了记得重新make)
7
MySQL中的Dbug
mysql中如何使用?
1.编译的时候加上--debug参数: ./configure --with-debug
2.启动mysql的时候加上参数:mysqld_safe --debug&
3.启动后,mysql默认在/tmp/下生成mysqld.trace文件,记录了所有的dbug跟踪信息.这个文件是会
动态更新的.
8
trace文件示例:
T@1 : >init_tmpdir
T@1 : | enter: pathlist: NULL
T@1 : | >init_dynamic_array
T@1 : | | >my_malloc
T@1 : | | | my: size: 8 my_flags: 0
T@1 : | | | exit: ptr: 0x6aed620
T@1 : | | <my_malloc
T@1 : | <init_dynamic_array
T@1 : | >cleanup_dirname
T@1 : | | enter: from: '/tmp'
T@1 : | | exit: to: '/tmp'
T@1 : | <cleanup_dirname
T@1 : | >my_malloc
T@1 : | | my: size: 5 my_flags: 16
T@1 : | | exit: ptr: 0x6aed640
T@1 : | <my_malloc
T@1 : <init_tmpdir
9
说明:
1.T@n的意思是表明这是在第n个线程中.
2.>init_tmpdir中的>的意思是进入函数.
3.<init_tmpdir中的<的意思是退出函数.
4.树形结构,清晰
5.mysqld_safe& --debug 会产生很多的信息,可以加上命令关注我们所关心的:
mysqld_safe --debug=-#d,info,error,query,taobao:t:r:O,/tmp/mysqld.trace&
1.d命令是指定tag,我们可以指定tag方便查看我们所关心的信息
例如我在源码中添加:
DBUG_PRINT( “taobao” , (”x is : %d” , x) );
这条语句的tag是taobao,那么我们用上面的方法启动mysqld后,就可以在trace文件直接查找
2.t命令开启函数控制流
3.O命令指定输出的trace文件且存在的话打开时清空其内容
更多的命令可以查看DBUG manual
10
每次在源码中添加了DBUG信息,重新make,再重启mysqld很麻烦?
写个脚本来帮忙
下载地址:
https://docs.google.com/leaf?id=0B0Y0NkwfPVE6ODQ3ZDAzNGYtZTBhYS00MzQxLTg5Y
zctOTJjYWRhMDA4NjU2&sort=name&layout=list&num=50
作用:
1.重新make sql目录下的源码
2.将mysqld覆盖原来的mysqld
3.重启mysqld(可选择)
11
参考:
1.DBUG User Manual
2.Creating Trace Files :
http://dev.mysql.com/doc/refman/5.0/en/making-trace-files.html
周旻钧@taobao DBA team
https://www.google.com/profiles/tim0405
mysql dbug

More Related Content

Similar to mysql dbug (20)

dbug in mysql
dbug in mysqldbug in mysql
dbug in mysql
Tim Chou
?
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
Kyle Lin
?
Reply
ReplyReply
Reply
海波 穆
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
imShining @DevCamp
?
嵌入式测试驱动开发
嵌入式测试驱动开发嵌入式测试驱动开发
嵌入式测试驱动开发
hugo lu
?
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
?
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
晓锋 陈
?
Build Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratchBuild Your Own Android Toolchain from scratch
Build Your Own Android Toolchain from scratch
National Cheng Kung University
?
骋辞集成肠&补尘辫;肠++代码
骋辞集成肠&补尘辫;肠++代码骋辞集成肠&补尘辫;肠++代码
骋辞集成肠&补尘辫;肠++代码
Andy Shi
?
2006年招聘试题
2006年招聘试题2006年招聘试题
2006年招聘试题
yiditushe
?
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题
yiditushe
?
Python 入门
Python 入门Python 入门
Python 入门
kuco945
?
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
Wei-Yu Chen
?
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
Chun-Ming Chang
?
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
台湾资料科学年会
?
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Chun-Min Chang
?
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
CC
?
dbug in mysql
dbug in mysqldbug in mysql
dbug in mysql
Tim Chou
?
Android 智慧型手機程式設計
Android 智慧型手機程式設計Android 智慧型手機程式設計
Android 智慧型手機程式設計
Kyle Lin
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映基于Android ndk的软件开发介绍 放映
基于Android ndk的软件开发介绍 放映
heyfluke
?
和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂和Android源代码一起工作 | 海豚浏览器 胡继堂
和Android源代码一起工作 | 海豚浏览器 胡继堂
imShining @DevCamp
?
嵌入式测试驱动开发
嵌入式测试驱动开发嵌入式测试驱动开发
嵌入式测试驱动开发
hugo lu
?
Introduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.xIntroduction to MVC of CodeIgniter 2.1.x
Introduction to MVC of CodeIgniter 2.1.x
Bo-Yi Wu
?
Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
晓锋 陈
?
骋辞集成肠&补尘辫;肠++代码
骋辞集成肠&补尘辫;肠++代码骋辞集成肠&补尘辫;肠++代码
骋辞集成肠&补尘辫;肠++代码
Andy Shi
?
2006年招聘试题
2006年招聘试题2006年招聘试题
2006年招聘试题
yiditushe
?
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题
yiditushe
?
Python 入门
Python 入门Python 入门
Python 入门
kuco945
?
Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計Hadoop Map Reduce 程式設計
Hadoop Map Reduce 程式設計
Wei-Yu Chen
?
Practical Data Analysis in R
Practical Data Analysis in RPractical Data Analysis in R
Practical Data Analysis in R
Chun-Ming Chang
?
[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務[系列活動] 手把手教你R語言資料分析實務
[系列活動] 手把手教你R語言資料分析實務
台湾资料科学年会
?
Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight Practical data analysis in R: from data collection to data insight
Practical data analysis in R: from data collection to data insight
Chun-Min Chang
?
基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析基于 FRIDA 的全平台逆向分析
基于 FRIDA 的全平台逆向分析
CC
?

Recently uploaded (7)

原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
oybyk
?
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
oybyk
?
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
oybyk
?
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
oybyk
?
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
原版西蒙菲莎大学毕业证录取书厂贵鲍文凭学位证办理
oybyk
?
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
原版蒙特利尔大学毕业证文凭证书鲍诲别惭文凭学位证办理
oybyk
?
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
原版维多利亚大学硕士毕业证成绩单鲍痴颈肠文凭学位证办理
oybyk
?
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
原版麦吉尔大学毕业证假文凭惭肠骋颈濒濒文凭学位证办理
oybyk
?
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
原版昆士兰大学毕业证成绩单鲍蚕文凭学位证办理
oybyk
?
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
原版莫纳什大学本科毕业证成绩单惭辞苍补蝉丑文凭学位证办理
oybyk
?
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
原版康卡迪亚大学硕士学位证成绩单颁辞苍肠辞谤诲颈补文凭学位证办理
oybyk
?

mysql dbug