nginx编译和调试

  1. nginx源码编译,依赖于pcre和zlib
  2. 下载源码后,通过./configure --help可以查看编译选项,为了增加gdb调试信息,使用./configure --with-cc-opt=‘-g -o0‘和make CFLAGS="-g -o0"
  3. 为了方便调试可以启动一个worker进程
  4. nginx对gdb也有辅助支持,用debug_points配置项:stop或者abort,表示在遇到严重错误的时候,

    ngingx的进程可以stop住。如果是abort,可以设置生成core文件。

  5. 关于宏,宏默认是直接替换的,如果在编译的时候,将-g 改为--ggdb3可以保留宏,但是增大了可执行二进制文件。info macro NGX_OK/ macro expand NGX_OK/p NGX_OK。如果info 没有找到,可以list文件加载一下后,再去执行info命令。
  6. 编译的时候可以增加--with-debug,以便生成调试信息。
  7. 配置文件的错误日志: error-log logs/error.log debug_http或者其他参数,只打印自己想要的。
  8. strace/pstack:  strace -t -T -o -f -p显示进程调用;pstack显示调用栈。
  9. 一次性获得nginx的全部执行流程:system tap;-finstrument-functions addr2line.sh;
  10. 加桩调试,在代码中嵌入自己的桩函数进行调试。
  11. 自己写代码,封装http报文,构造nginx异常场景来进行观察。
时间: 2024-10-12 12:30:26

nginx编译和调试的相关文章

Hadoop源码编译与调试汇总

虽然在运行Hadoop的时候可以打印出大量的运行日志,但是很多时候只通过打印这些日志是不能很好地跟踪Hadoop各个模块的运行状况.这时候编译与调试Hadoop源码就得派上场了.这也就是今天本文需要讨论的. 先说说怎么编译Hadoop源码,本文主要介绍在Linux环境下用Maven来编译Hadoop.在编译Hadoop之前,我们需要准备好编译环境: 1.安装好1.6或以上的JDK;2.安装Maven,被做好相应的配置;3.安装ProtocolBuffer 2.5.0,MapReduce和HDFS

Nginx编译安装,启动,停止,升级。

1.简单介绍下Nginx Nginx是一款轻量级的web服务器和反向代理服务器,它使用了epoll的I/O模型,也就是事件触发I/O模型,减少了进程的生成切换所消耗的系统资源(CPU的压力减少,内存的占用也会减少),可以达到很高的并发请求.它是一款开源软件,企业成本降低,它的使用配置也比较简单,同时支持Rewrite,作为反向代理的时候可以检查后端的Web服务器的健康状况,能够支持热部署. 2.Nginx安装,重启,升级,停止. 环境是Centos系统,通过www.nginx.org下载需要的源

[linux] Nginx编译安装错误error: the HTTP rewrite module requires the PCRE library

nginx编译错误: 执行如下命令安装缺少的文件即可

Java中带包(创建及引用)的类的编译与调试

Java中带包(创建及引用)的类的编译与调试 java源程序的编译大家都知道,也就是cmd中到源文件所在目录下javac **.java即可,当程序中有包声明还能简简单单的直接javac **.java吗?答案当然是no,下面举个简单的例子证明一下直接javac **.java会怎么样. 如下:F:\javaweb2班\20160531目录下有A.java文件,注意源文件中有包声明 package mypack; public class A { String name; int age; pu

NGINX编译安装后添加新模块的方法

刚忙完研发又有新的需求过来,测试服务器的nginx需要有HttpUpstreamRequestHashModule和HttpStubStatusModule:擦!安装软件环境时怎么不说清楚:妹的,悲剧. 测试服务器崩溃的是不是我安装的软件,天啊.赶紧搞吧!!! 环境:centos 6.4 64位 编译安装nginx 1:查看nginx版本和安装时间带的具体参数  /usr/local/nginx/sbin/nginx  -V 2:下载相应的版本的nginx源码包[nginx-1.5.11.tar

使用gcc编译gdb调试

gcc 在linux系统中,默认是没有安装gcc编译器的,可以通过命令 rpm -q | grep gcc 来查看.安装命令为: yum -y install gcc 安装后,编写一个.c结尾的文件. gcc test.c 就会默认输出一个a.out的输出文件,这个输出文件就是可执行文件. 如果加上-o选项,则可以自定目标文件. gcc -o test test.c test就是它的可执行文件. 一般都默认加上-Wall 选项,可以自动提示一些出错警告的信息. gcc -Wall -o test

mysql在mac上的编译和调试

今天正式开始漫漫长路,打算这几年用业余时间刷刷mysql5.5源代码,由于手边的书籍基本都是基于mysql5.5的,所以就不用5.7版本的代码了,更何况我更关注基本内核.因此,没有特殊指明,那么,一般都指mysql5.5版本.工作原因没有深入去了解mysql,既然想玩技术,工作上的技术挑战没有研究mysql内核这么直接,因此,决定用业余时间搞搞些技术活,一方面可以让自己的技术深入储备,另一方面也让自己在工作之余从技术中获得点点成就感. 选择mac平台因为简单,windows平台我也编译成功了,但

nginx编译安装和未编译模块的添加

安装nginx Yum 安装 参考http://nginx.org/en/linux_packages.html 编译安装nginx 系统首先要安装gcc* 包以及一些依赖包 [[email protected] tool]# wget http://nginx.org/download/nginx-1.8.0.tar.gz [[email protected] tool]# tar xf nginx-1.8.0.tar.gz -C /usr/local/src/ [[email protect

nginx 编译的问题

最近在编译安装nginx时遇到个奇怪的问题,翻遍国内外网站都没有得到解决.主要问题是checking时报如下的错: 安装php的时候也是报这个错,但我用手动编译安装openssl后,php编译安装通过. 方法一 ------------------------------------------------------------------------------------------------------------------------------------------------