LoginSignup
0
1

More than 5 years have passed since last update.

NSDで動的にdebugログをだす

Last updated at Posted at 2017-03-17

NSDで動的にdebugログをだす

NSDでは標準のログの他に、--enable-checkingオプション付きでコンパイルすると、debug logを出すことができます。

しかし、nsd起動時の引数として渡す必要があり、nsd-controlではlog verbosityは変えることができますが、debug logのON/OFFはできません。

そこで、gdbで動いているプロセスにattachしてdebug logを有効にします。

gdbをインストールしていない場合は、gdbをインストールします

$ sudo yum install gdb

nsdのPIDを探します

$ ps -ef | grep nsd
nsd      19685     1  0 23:28 ?        00:00:00 /var/service/ans/nsd/sbin/nsd
nsd      19686 19685  0 23:28 ?        00:00:00 /var/service/ans/nsd/sbin/nsd
nsd      19691 19686  0 23:28 ?        00:00:00 /var/service/ans/nsd/sbin/nsd

gdbでプロセスにattachします。

$ sudo gdb /usr/local/sbin/nsd
(gdb)attach 22997

debug levelの変数の値を変更します。

(gdb)print nsd_debug_level
$1 = 0 # debug leveが0の状態
(gdb)print nsd_debug_level=1
$2 = 1
(gdb)quit

なお、attach中はそのプロセスの処理が止まります。

今回は、ゾーン転送周りのdebugログを出したかったので、PPID 1のプロセスをattachしています。そのため、ゾーン転送や、nsd-control処理が止まります。DNSレスポンスを返すのは別のプロセスなため、そこまで影響はないと思われます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1