GDB调试-多进程

GDB调试-多进程一、gdb常用命令二、GDB与多进程#include#include#includeintmain(){pid_tid=fork();if(id0){perror(“fork”);exit(-1);}elseif(id==0){printf_gdb多进程

一、gdb常用命令

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

显示GDB调试的所有inferior,GDB为他们分配ID。其中带*的进程是正在调试的进程。

       (GDB将每一个被调试程序的执行状态记录在一个名为inferior的结构中。一般情况下一个inferior对应一个进程,每一个inferior都有自己的地址空间。inferior有时候会在进程没有启动时就存在)

切换调试的进程:inferior <inferior nu

今天的文章GDB调试-多进程分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/66920.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注