GDBで子プロセスのデバッグ

困ったぞ

さて、fork後に子プロセスを呼ぶにはどうしたらいいのか・・・。コレが出来ないとこの先とっても辛いので調べます。

マルチプロセス・プログラムのデバッグ

ありました。さすがマニュアル!

子プロセスに制御を移したいときは「set follow-fork-mode child」!

ではやってみる。

(gdb) set follow-fork-mode child
(gdb) b server_main
Breakpoint 1 at 0x8048d3e: file httpd.c, line 88.
(gdb) r --port 4567 .
Starting program: /home/tanaka/study/c/normal/httpd/httpd --port 4567 .

Breakpoint 1, server_main (server=10, docroot=0xbfd2a7c7 ".")
    at httpd.c:88
88              socklen_t addrlen = sizeof addr;
(gdb) n
92              sock = accept(server, (struct sockaddr*)&addr, &addrlen);
(gdb) n
93              if (sock < 0)
(gdb) n
95              pid = fork();
(gdb) n
[Switching to process 4780]
96              if (pid < 0)

おぉぉぉ。子プロセスに制御が移りました。もうforkも恐くないっす!!