ホームページ  >  記事  >  バックエンド開発  >  nginx ソースコード (3) デバッグ

nginx ソースコード (3) デバッグ

WBOY
WBOYオリジナル
2016-08-08 09:28:021263ブラウズ

前回の記事からの続きです

nginxは実行時にバックグラウンドプロセスとして動作し、1つのマスタープロセスと3つのプロセスプロセスがデバッグを容易にするために、この構成を変更する必要があります。

ここでソースコードを直接変更して、再度作成しやすくするために、最初に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>

nginx は印刷を確認し、その後の起動のためにコンソールで直接実行されるため、上記に printf を追加しました。 conf/nginx.conf のポート番号を 8080 に変更し、make を再実行すると、コンソールに出力が表示されます。ブラウザが http://localhost:8080 にアクセスすると、成功も返されますが、他のログ情報は引き続き logs ディレクトリ内のファイルに出力されます。

上記では、関連する側面を含む nginx ソース コードのデバッグについて説明しました。PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。