Netbeans调试器(用于Linux-C开发)在waitpid期间/之后终止(不会达到断点)

时间:2018-07-24 06:46:01

标签: c netbeans fork

我们正在处理客户端/服务器应用程序。我正在研究各种日志。由于某些管理上的决定,我们最近迁移到了netbeans IDE。

我是Asp.net的开发人员,最近转到了底层编程。我只了解C的基础知识(课程级programmig),所以花了两天的时间来理解C的派生概念。

现在,我正在调试以下由高级开发人员(当然她不在城市)编写的代码:

int UpdateLogsDuringExecution(char *Input)
{
    pid_t pid;
    int status;
    pid = fork();
    if (pid == 0)
    {
        //write data to file
        return 1; //on successful execution & 0 otherwise.
    }
    else
    {
        do
        {
            waitpid(pid, &status, WUNTRACED); //after this statement debugger does not hit any break points
        } while (!WIFEXITED(status) && !WIFSIGNALED(status));
    }

    kill(0, SIGTERM); //if I change WUNTRACED to any other flag (for testing/understanding), debugger gives error something like Forward and Continue, Pause and Continue etc.
    return 1;
}

int main()

{
    setuid(0);
    int stat = 1;
    while (stat)
    {
        char *userInput = TakeUserInput();
        stat = UpdateLogsDuringExecution(userInput);
        if(!stat)
          break;
        stat= checkAndExecFlag();
        .
        .           
        .
        .
        //do more work

    }
    return 1;
}

请注意,此代码可以正常工作,但我想调试该代码以了解业务逻辑

请帮助我了解此行为。我认为可能是 waitpid 引起的,如果 WUNTRACED 更改为任何其他标志,则 kill 会导致调试器无法再击中任何断点

欢迎提出所有建议。

谢谢。

修改

程序中的所有函数都只有完全相同的结构

if(pid==0) //differs

0 个答案:

没有答案