调试C分叉的进程停止在分支上

时间:2019-06-07 08:53:09

标签: c eclipse debugging netbeans fork

我必须调试一些分叉的过程。 我想调试父进程和子进程。

与其他问题一样,我同时激活“不间断模式”和“自动调试分支过程”。 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',我会得到:

  

找不到当前函数的边界

如果我禁用“自动调试分叉的进程”,则该进程将继续,但无法调试子进程。

谢谢!

0 个答案:

没有答案