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も恐くないっす!!