一、gdb常用命令
二、GDB与多进程
#include<stdio.h>
#include<sys/types.h>
#include<stdlib.h>
int main()
{
pid_t id = fork();
if(id < 0 )
{
perror("fork");
exit(-1);
}else if(id == 0)
{
printf("child id is %d, my father id is %d\n", getpid(), getppid());
}else
{
sleep(1);
printf("father id id %d\n", getpid());
wait(NULL);
}
return 0;
}
默认设置下,在调试多进程程序时GDB只会调用主进程,但是GDB(>V7.0)支持多进程的分别与同步调试。即GDB支持同时调试多个进程。只需要设置follow-fork-mode(默认为 parent)和detach-on-fork(默认为:on)即可。
follow-fork-mode detach-on-fork 说明
parent on 只调试主进程(GDB默认)
child on 只调试子进程
parent off 同时调试两个进程,gdb跟主进程,子进程block(阻塞)在fork位置child off 同时调试两个进程,gdb跟子进程,主进程block在fork位置
设置方法: set follow-fork-mode[parent|child] set detach-on-fork[on|off]
显示:show follow-fork-mode show detach-on-fork
查询正在调试的进程:info inferiors