nginx第二章--源代码调试输出方法(本人使用方面)

刚开始把nginx安装好后,我就对其源代码产生了浓厚兴趣,试图通过加入printf函数输出自己的调试信息来查看整个nginx的运行流程。最后发现自己加入的printf根本不管用,屏幕上没有任何信息。

后来发现程序重定向了STDOUT文件符到/dev/null里了,所有看不到任何输出信息。原因找到后,我们只要把重定向函数dup2注释即可(在os/unix/ngx_daemon.c的45行左右)。

以上注释完成后,你就可以在程序的任何位置加入你自己的调试信息,方便你分析nginx源码。除了改动文件,接下来肯定要重新编译源代码。去到nginx源码根目录下,执行make,makeintall就可以获取最新的nginx可执行文件,运行启动即可看到自己所加的最新调试信息。

采取以上调试方法简单方便,易于理解。建议在调试源码时最好单进程启动,你可以看下/conf/nginx.conf文件里work_processes值是否为1,为1只是单进程。如果采取多进程启动,打印的日志势必会杂乱,对于理清程序的来龙去脉是不利的。

最后祝你调试愉快。

时间: 2024-10-05 23:26:57

nginx第二章--源代码调试输出方法(本人使用方面)的相关文章

大道至简第二章—懒人的方法

大道至简第二章—懒人的方法 僰道有故蜀王兵阑亦有神,作大滩江中.其崖崭峻,不可凿:乃积薪烧之.故其处悬崖有赤白五色. ----华阳国志卷三-蜀志 在第一章中作者引用愚公移山的典故向我们介绍了编程的精义,以愚公为例向我们介绍了个编程人员应具备的素质.而在第二章,作者通过蜀郡太守李冰烧石破山建造都江堰的故事告诉我们我们只是勤奋是不够的.如果李冰像愚公那样日复一日的敲石碎山,就不会有空闲时间去观察,去思考了.那也不会有“积薪烧之”的事情了.所以李冰乃是闲人一枚. 人的精力是有限的.愚公而愚公可以多吃点

ntv.js框架(第二章) - 源代码目录结构

源代码目录结构: css              // 包含一些标签默认样式重置.常用class.组件所需的css样式 images       // 包含了2张透明图,具体用处后续介绍(可选目录) js               // 框架核心代码 js/effect    // 框架提供的效果插件,例如滚动div.滑动菜单 js文件结构: ?1common.js     // 公共函数类.例如:将document.getElementById(id)封装为 $("#id")函数

电工电子--第二章--电路的分析方法

重点: 支路电流法 叠加定理 戴维宁定理. 电子技术:数电,模电. 2.1 电阻串并联连接的等效变换 电流源 的 电压是由外电路决定的. ①电压源模型和电流源模型的等效关系只是对外电路而言,对电源内部则是不等效的. 当电压源开路时,I=0,电源内阻Ro上不损耗功率. 当电流源开路时,电源内部仍有电流,内阻Ro上有功率损耗. ②等效变换时,注意两电源参考方向的对应关系,即理想电压源电压的极性与理想电流源电流的方向. 开路是空气最为负载,空气的绝缘性是非常大的 G:电导(电阻的倒数) 单位为西(门子

Upgrading to Java 8——第二章 Method References(方法引用)

概述 很多java 方法 会使用函数式接口作为参数.例如,java.util.Arrays类中的一个sort方法,就接受一个Comparator接口,它就是一个函数式接口,sort方法的签名如下: public static T[] sort(T[] array, Comparator<? super T> comparator) 相对于传递一个Compartor的实例给sort方法,不如传递一个Lambda表达式. 进一步,我们可以传递一个方法引用来代替Lambda表达式,一个简单的方法引用

读大道至简第二章有感

大道至简第二章的题目是"是懒人造就了方法"而开头也写到李冰的开山并与愚公移山做了比较,无非就是想用具体的例子来证明懒人造就方法的观点.而其深层的含义便是要学会观察,学会思考,同样是一件事,很多人都能做,有人用的时间长资源多,而有的人则截然相反,这就说明了观察思考的重要性,而相对于编程来说,一个简单的比较大小的问题,有的人比较五次,而有的人只比较四次就能运行出结果,这就是程序的优化,也是思考的结果 一百万行代码是可以写在一个文件里的.这反映了一个很常见的问题,很多初学者比如我们总是在关注

调试漏洞代码第二章

0x01 修改int的值 process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=" alt="调试漏洞代码第二章" /> 用字符串末尾的null字符,覆盖判断逻辑返回的int的值. 最后成功如图: 0x02 覆盖返回地址的值 这里是跳转到了错误的0x61616161 直接跳转到输出

软件工程理论方法与实践第二章读后感

第二章读后感 为解决软件开发的问题,首先是将整个软件开发任务看做是一个可比较的刻度量的可改造,而软件过程是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动,主要包括问题提出,软件需求规格说明,软件设计等等.软件过程模型主要分为瀑布模型,快速原型模型,增量模型,螺旋模型,形式化方法模型,基于组件的开发模型.而微软公司的软件过程模型由规划,设计,开发,稳定和发布五个主要阶段组成,采取低近视的软件开发策略,具体表现在解决问题的及时行.不确定和变更因素的可控性,缩短按产品的上市周

ASP.NET后台怎么输出方法中间调试信息?

后台方法,不止是aspx.cs,而是页面调用的一些其它方法.想调试这些方法,我以前winform都是MessageBox.Show一些中间结果,现在我也想用这种方式.但想想,网页会触发 MessageBox.Show方法???而且我好像找不到System.Windows.Forms命名空间.Console.WriteLine倒是能用,但输出到哪里去了呢……? protected void Button_Submit_Click(object sender, EventArgs e) { ar =

《软件可靠性方法》笔记(一)---第二章 预备知识

时间:2016.11.12: 地点:南京江宁实验室: 状态:迷茫的研一: 为什么会读到这本书?导师推荐的.可以说第一开始听到这本书名时完全是一脸蒙蔽,就像选本科毕设题目时是一样的...就是在上半年当老师告诉我他是做形式化的,我一度以为我特么的难道联系到自动化学院了?我可是一门心思向计算机的.后来直到暑假在家闲的发慌翻翻本科时候的软件课本书时,居然看到了一章讲形式化的...蜜汁尴尬,毕竟当年这门课最后我得了优.咳咳,扯远了.这本书还是蛮适合刚接触形式化的人看的,但是得有一定的数学功底(所以说我一开