• 聊聊、Nginx GDB与MAIN


      上一篇文章主要介绍了 Nginx 在 Window 和 Linux 平台上的安装。本章节主要介绍 Nginx 源码学习方法和源码结构,以及 Nginx 启动时 main 方法的位置,参数信息。后面的章节主要是 Linux 平台,你要问为何是 Linux,而不是 Window。我只能说 Nginx 是基于 Linux 平台开发出来的,我也习惯了 Linux 平台开发。

      上一篇文章我讲了安装,现在打开 MobaXterm ,连接上 Nginx 服务器。输入 whereis nginx 命令查看安装目录:

      是的我的安装目录在  /usr/local/nginx。

      现在我们进入这个目录,看看里面有哪些文件。

      暂时先不管这些文件是做啥用的,像 fastcgi_temp,proxy_temp , scgi_temp ,uwsgi_temp 这些模块都是可配的,以后咱们再详细的讲解。

      大家有没有看到 sbin 文件,对的,这里面就是我们启动 Nginx 的地方。

      先进入看看有啥:

      有两个文件,一个 nginx ,一个 nginx.old 。old 文件是之前为了平滑升级所备份的 nginx 文件。我们启动只需要nginx 就行了。

      ok,我们启动 Nginx 。输入 ./nginx 就行了。

      怎么知道启动成功没有呢?输入 ps -ef|grep nginx 。

      我们看到了一个 nginx: master process 主线程,一个 nginx: worker process 工作线程,这个工作线程多少是可配的,跟服务器内核数量有关。ok,如果你看到这两个线程,说明Nginx已经启动。为了进一步验证,我们访问http://localhost 页面,默认 80 端口。输入 curl http://localhost

      已经访问到相关欢迎页面了,默认 html 文件里面 index.html 。 ok,到这里我们 Nginx 已经正常启动。

      接下来,我们通过 gdb 调试工具找到 Nginx 启动时的 main 方法在哪。

      还是在 sbin 目录下,我们输入 gdb nginx 命令。

      gdb 调试工具是 Linux 自带的,对于调试代码非常的方便,具体 gdb 信息大家可以上网看看。 ok,接下来输入  b  main。

      好的,看到了一行信息,file  src/core/nginx.c  line  198。

      也就是在 nginx.c 文件的 198 行,这个地方就是 main 方法开始地方。不同的 Nginx 版本这个 main 方法所在的行也有不一样,大家根据自己的信息来找就行了。

      怎么找呢?

      学习源码确实需要方法,不然会很乱,也很累。上一章讲安装,Nginx 网上下载的安装包我放在了 /usr/local/src/nginx包里面。我们去看看。

      我下载的版本是1.10.2

      左边的 nginx-1.10.2 包是解压后并且编译过的,将这个包拷贝到 Win 系统,放你自己计划的目录就行。我放在 G:学习日记 ginx ginx-1.10.2。

      ok,我们来找 src/core/nginx.c  line  198,进入 G:学习日记 ginx ginx-1.10.2,你们按照自己的来,找到nginx.c 的198行。 

      ok,我们找到了 main 方法,接下来的文章我将讲解 main 方法,到底 Nginx 启动的时候做了什么事情,关于 main 方法里面的代码,大家可以自己先看看。谢谢大家观看!

  • 相关阅读:
    HDU 1058 Humble Numbers
    HDU 1160 FatMouse's Speed
    HDU 1087 Super Jumping! Jumping! Jumping!
    HDU 1003 Max Sum
    HDU 1297 Children’s Queue
    UVA1584环状序列 Circular Sequence
    UVA442 矩阵链乘 Matrix Chain Multiplication
    DjangoModels修改后出现You are trying to add a non-nullable field 'download' to book without a default; we can't do that (the database needs something to populate existing rows). Please select a fix:
    opencv做的简单播放器
    c++文件流输入输出
  • 原文地址:https://www.cnblogs.com/xums/p/6741089.html
Copyright © 2020-2023  润新知