首页 > 解决方案 > 调试在 fork 上停止的 C 分叉进程

问题描述

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

与其他问题一样,我同时激活了“不间断模式”和“自动调试分叉进程”。 在此处输入图像描述 问题就出在这里:现在当我到达 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”,我会得到:

找不到当前函数的边界

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

谢谢!

标签: ceclipsedebuggingnetbeansfork

解决方案


推荐阅读