我必须调试一些分叉的过程。 我想调试父进程和子进程。
与其他问题一样,我同时激活“不间断模式”和“自动调试分支过程”。 enter image description here 问题出在这里: 现在,当我到达fork指令时,一切都停止了,我不知道如何继续。 这里是简单的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int pid=fork();
if (pid>0)
{
printf("FATHER PROCESS");
} else if(pid<0)
{
printf("ERROR");
exit(1);
} else
{
printf("I'M THE CHILD PROCESS");
exit(2);
}
printf("\nEND");
return 0;
}
子进程开始,但是我不知道该怎么办。 我在eclipse和NetBeans中尝试过,但是它们有相同的问题。 当我使用调试器控制台时,键入“ n”,这是输出:
[新流程3077]
从/ home / user / programmi / eclipse-workspace / provaFork / Debug / provaFork ...中读取符号。
从/usr/lib/debug/lib/x86_64-linux-gnu/libc-2.27.so ...读取符号完成。
从/usr/lib/debug/lib/x86_64-linux-gnu/ld-2.27.so ...读取符号。
警告:
无法插入断点11。
无法访问地址0x6d2的内存
无法插入断点10。
无法访问地址0x6e0的内存
无法插入断点7。
无法访问地址0x714的内存
命令已中止。
(gdb)[切换到线程2.2(进程3077)]
#0 0x00007ffff7ac8b1c in ?? ()
进程3077是子进程(我认为)。 如果我再次输入'n',我会得到:
找不到当前函数的边界
如果我禁用“自动调试分叉的进程”,则该进程将继续,但无法调试子进程。
谢谢!