在调用fork
之后,当前进程将调用exit(0)
。
但子进程将继续运行。
switch(fork())
{
case -1:
exit(1);
case 0:
// child process continues
break;
default:
// the current process exits
exit(0);
}
在这种情况下,我该如何继续调试子进程?
看看这个。使用:
set follow-fork-mode <mode>
将调试器响应设置为fork或vfork的程序调用。调用fork或vfork会创建一个新进程。<mode>
参数可以是:
parent
: 在fork之后调试原始进程。子进程无障碍运行。这是默认设置。
child
: 在fork之后调试新进程。父进程无障碍运行。
gdb
不支持同时调试多个进程。但是你可以使用set detach-on-fork off
来阻塞父进程直到子进程退出。如果你的进程不需要同时运行,这样做就可以了。 - undefined
exec
:https://dev59.com/BHRC5IYBdhLWcg3wMeLg#43099366 - Ciro Santilli OurBigBook.com