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什么的。
mysqld.cc启动分析及运行过程(题目取大了,不好意思)的更多相关文章
- 启动Tomcat一闪而过——分析及解决过程
启动Tomcat一闪而过--分析及解决过程 嗯,昨天将有关JDK的知识稍微整理了一下,现在稍微整理一下有关Tomcat的! 1:Tomcat是什么? Tomcat是当今世界上使用最为广泛的.开源免费的 ...
- 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本
老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...
- 老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化
老李推荐:第8章1节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行环境初始化 首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目 ...
- Linux内核源码分析--内核启动之zImage自解压过程
参考: http://blog.chinaunix.net/uid-20543672-id-3018233.html Linux内核编译流程分析 linux2.6内核启动分析--李枝果(不看是你的损失 ...
- Linux内核源码分析--内核启动之zImage自解压过程【转】
转自:https://www.cnblogs.com/pengdonglin137/p/3838245.html 阅读目录(Content) zImage来历 piggy.gz压缩文件的特点 vmli ...
- 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结
老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...
- appium界面运行过程(结合日志截图分析)
appium界面运行过程: 1.启动一个http服务器:127.0.0.1:47232.根据测试代码setUp()进行初始化,在http服务器上建立一个session对象3.开始调用adb,找到连接上 ...
- 分析system_call中断处理过程
分析system_call中断处理过程 上周我们使用gcc内嵌汇编调用系统调用,这次我们具体分析下过程. 将getpid嵌入menuos 代码从github下载,步骤如下: 1. 增加一个函数,get ...
- mkimage工具 加载地址和入口地址 内核启动分析
第三章第二节 mkimage工具制作Linux内核的压缩镜像文件,需要使用到mkimage工具.mkimage这个工具位于u-boot-2013. 04中的tools目录下,它可以用来制作不压缩或者压 ...
随机推荐
- 用zd1211+Ubuntu 10.04实现的AP
[日期:2010-06-24] zd1211 在Ubuntu 10.04 LTS上的master mode 的问题解决之后,理论上就可以把zd1211 USB网卡用来做一个AP了,实际上还有几个问 ...
- 如何发布开源自己的框架或类库到CocoaPods - 图文讲解
当自己的库已经上传GitHub后,那么如何快速简单的开源自己的库呢? 这里就是介绍如何将自己的类库上传到pods管理库,以便开源所有人都能方便使用. 准备前提: - 项目已上传到GitHub (注意, ...
- nyoj----522 Interval (简单树状数组)
Interval 时间限制:2000 ms | 内存限制:65535 KB 难度:4 描述 There are n(1 <= n <= 100000) intervals [ai, ...
- 几道比较难的SQL题
上条记录和下一条记录 在展示博客文章时,在文章底部需要展示上一篇文章和下一篇文章,文章的排序当然是按照时间排序的. 选定下一条时可以用limit 1来实现,选取上一条时可以倒序limit 1实现 (S ...
- 马老师 linux必备web服务入门及高级进阶
http://edu.51cto.com/course/course_id-866.html HTTP: HyperText Transfer Protocol 超文本传输协议 超链接: Web: h ...
- Android特性与系统架构
Android特性与系统架构 一.Android特性 • 应用程序框架支持组件的重用与替换 • Dalvik 虚拟机专为移动设备优化 • 集成的浏览器基于开源的WebKit 引擎 • 优化的图形库包括 ...
- Linux中断 - High level irq event handler
一.前言 当外设触发一次中断后,一个大概的处理过程是: 1.具体CPU architecture相关的模块会进行现场保护,然后调用machine driver对应的中断处理handler 2.mach ...
- uploadify上传图片
1.实现源代码 <%@ page language="java" import="java.util.*" pageEncoding="UTF- ...
- 在Debug模式下中断, 在Release模式下跳出当前函数的断言
在Debug模式下中断, 在Release模式下跳出当前函数的断言 #ifdef DEBUG #define __breakPoint_on_debug asm("int3") # ...
- php 解析xml
解析xml,返回一个对象. $obj = simplexml_load_string($XML, 'SimpleXMLElement', LIBXML_NOCDATA); 查看结果var_dump($ ...