>  기사  >  백엔드 개발  >  nginx 소스 코드(3) 디버깅

nginx 소스 코드(3) 디버깅

WBOY
WBOY원래의
2016-08-08 09:28:021263검색

이전 기사에서 이어짐

nginx가 실행될 때 하나의 마스터와 세 개의 프로세스 프로세스로 구성된 백그라운드 프로세스로 실행됩니다. 디버깅을 용이하게 하려면 이 구성을 변경해야 합니다.

여기서 소스코드를 직접 변경하세요. 다시 만들기 쉽도록 Makefile을 먼저 수정해주세요
make clean 후에 모든 Makefile 파일이 삭제되지 않도록 원본

<code><span>clean:</span>
    rm -rf Makefile objs</code>

<code><span>clean</span>:
    rm -rf nginx objs<span>/ngx_modules.o objs/src/core*.o objs/src/event/</span>*.o objs<span>/src/event/modules/</span>*.o objs<span>/src/http/</span>*.o objs<span>/src/http/modules/</span>*.o objs<span>/src/http/modules/proxy/</span>*.o objs<span>/src/os/unix/</span>*.o</code>

으로 변경합니다.

core/nginx.c에서 데몬 및 다중 프로세스와 관련된 코드를 주석 처리합니다.

<code><span>/*
    if (!ngx_inherited && ccf->daemon) {
        if (ngx_daemon(cycle->log) == NGX_ERROR) {
            return 1;
        }

        ngx_daemonized = 1;
    }
    */</span></code>

<code><span>printf</span>(<span>"[main] to start ngx_single_process_cycle\n"</span>);

    <span>///if (ngx_process == NGX_PROCESS_MASTER) {</span><span>///    ngx_master_process_cycle(cycle, &ctx);</span><span>///} else {</span>
        ngx_single_process_cycle(cycle, &ctx);
    <span>///}</span></code>

위에 printf를 추가했습니다. 왜냐하면 nginx는 콘솔에서 직접 실행되어 인쇄를 확인하고 이후 시작의 편의를 위해 conf/nginx.conf의 포트 번호를 8080으로 변경하고 make를 다시 실행하면 콘솔에 인쇄된 출력을 볼 수 있습니다. 브라우저가 http://localhost:8080에 액세스하면 성공도 반환되고 기타 로그 정보는 여전히 로그 디렉터리의 파일에 출력됩니다.

위 내용은 관련 측면을 포함하여 nginx 소스 코드(3)의 디버깅을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.