mysqld.cc启动分析及运行过程(题目取大了,不好意思)

mysql源文件的压缩文件mysql-5.7.12.tar.gz有48.2Mb,这么大个家伙。

以前学c语言什么的,觉得尼玛个臭c可以干嘛呀,敢看了源文件我彻底震精了,光是一个THD类的说明就占了3000多行,

留我风中凌乱,感慨人类软件工程之伟大,喂猫本科不是或者读研不是学计算机捏。

直接去看局部的类的话肯定要看晕,所以感觉是不是从主线入手好点呢,从驱动程序main先入手吧,然后找到了解压后mysql-5.7.12\sql的mysql.cc,

结果找了半天,个鬼int main( )都没有看到就看到了这个:

int mysqld_main(int argc, char **argv)

我想,这驱动程序或者入口程序不应该是int main( )么,后来上网一查main( )函数尼玛在\sql\main.cc中定义的。

之前自己闷头看源码,结果太复杂,又没有上网查查资料,搞得闹笑话了。

main.cc的源代码很简单,就是一个调用mysqld_main( )的过程:

/*
  main() for mysqld.
  Calls mysqld_main() entry point exported by sql library.
  这里是调用mysqld_main()的入口点,终于把你给抓到了
*/
extern int mysqld_main(int argc, char **argv);	// 声明在别处存在这个函数mysqld_main()

int main(int argc, char **argv)
{
  return mysqld_main(argc, argv);	// 调用mysqld_main()
}

当我感叹main.cc简单的时候,mysqld.cc毫不留情的扇了我一巴掌,大概是9300行,腻酿哦!

头文件mysqld.h大概是980行,里面有好多好多的声明。

mysqld.cc中有两个mysqld_main( )函数

写到这不得不停下来,c基础不好,要去看下ifdef,ifndef什么的。

时间: 2024-10-08 11:20:05

mysqld.cc启动分析及运行过程(题目取大了,不好意思)的相关文章

Zico源码分析:运行启动过程分析和总结

其实已经有童鞋对Zico的源码和运行过程进行了总结,例如:http://www.cnblogs.com/shuaiwang/p/4522905.html.这里我再补充一些内容.当我们使用mvn install将Zico打包成war包后,将其解压后可以看到MANIFEST.MF文件中指定的主类是:com.jitlogic.zico.main.ZicoMain,简单看一下这个类,发现其主要作用是启动Jetty Web Server,并加载配置文件,实现一些安全配置.那么我们需要问了,这个war包是怎

老李推荐: 第8章4节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动AndroidDebugBridge 1

老李推荐: 第8章4节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-启动AndroidDebugBridge 上一节我们看到在启动AndroidDebugBridge的过程中会调用其start方法,而该方法会做2个主要的事情: 715行startAdb:开启AndroidDebugBridge 722-723行:初始化android设备监控并启动DeviceMonitor设备监控线程. 其中第一点我们上一小节已经做了详尽分析了,那么我们往下就去分析下第2点. Dev

第8章6节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-启动Monkey

大家可能会觉得奇怪,为什么启动目标设备端的monkey进程会放在"运行测试脚本"这一节之后来阐述. 纵观前面整个MonkeyRunner的启动流程,我们看到并没有提及到monkey进程启动的地方.那么就奇怪了,monkey是什么时候被MonkeyRunner启动起来的呢? 我们的测试脚本一开始时几乎毫无例外的都需要执行一个调用:MonkeyRunner.waitForConnection(),如果有多个设备连接到主机的话还需要指定设备序列号,还可以指定等待连接的Timeout时间,比如

启动Tomcat一闪而过——分析及解决过程

转自http://www.cnblogs.com/godtrue/p/4339045.html 启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的Servlet/JSP容器,其主要功能是用于发布JavaWeb应用. 更多的信息请参看: http://tomcat.apache.org/ 2:怎么选择Tomcat的版本 规则是看我们选择使用的技术是什

Linux内核源码分析--内核启动之zImage自解压过程

copy from:https://www.cnblogs.com/pengdonglin137/p/3838245.html 阅读目录(Content) zImage来历 piggy.gz压缩文件的特点 vmlinux.lds arch/arm/boot/compressed/head.S arch/arm/boot/compressed/misc.c arch/arm/boot/compressed/decompressed.c lib/decompress_inflate.c 参考: ht

程序启动和运行过程

摘抄自:http://www.cnblogs.com/kenshincui/p/3890880.html#runProcess 程序的运行过程 在几乎所有的程序开发中程序一般都是从main函数开始运行的,那么IOS程序也不例外,在上图中我们可以看到Xcode为我们生成了一个main.m文件: // // main.m // FirstIOS // // Created by Kenshin Cui on 14-2-23. // Copyright (c) 2014年 Kenshin Cui. A

appium界面运行过程(结合日志截图分析)

appium界面运行过程: 1.启动一个http服务器:127.0.0.1:47232.根据测试代码setUp()进行初始化,在http服务器上建立一个session对象3.开始调用adb,找到连接上的设备,设置设备id4.等待设备准备好响应命令5.开启logcat日志监控6.将生成的apk属性信息文件strings.json存到了设备 /data/local/tmp目录下7.读取apk安装情况8.端口映射,发给appium httpserver的内容,经过httpserver后直接发给设备 f

简单C程序在IA-32 CPU上运行过程的分析

本文将通过编译器生成的汇编代码分析C程序在IA-32体系PC上的运行流程 实验环境: gcc 4.8.2 C语言程序的内存结构 C代码如下 int g(int x) { return x + 1; } int f(int x) { return g(x); } int main(void) { return f(2) + 3; } 使用编译命令gcc -S -O0 -o main.s main.c -m32编译出汇编文件,如下 g: pushl %ebp movl %esp, %ebp movl

从内存中分析程序的运行过程

我觉得图形是最可以直观一种解释方法,所以先把程序运行过程的图形解析流程给大家,通过图形来一步一步的理解才是最让人清楚,直观的: 流程图懂了,好多事情也就懂了!