From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30985 invoked by alias); 10 Aug 2006 21:06:43 -0000 Received: (qmail 30957 invoked by uid 22791); 10 Aug 2006 21:06:42 -0000 X-Spam-Check-By: sourceware.org Received: from www.nabble.com (HELO talk.nabble.com) (72.21.53.35) by sourceware.org (qpsmtpd/0.31) with ESMTP; Thu, 10 Aug 2006 21:06:39 +0000 Received: from [72.21.53.38] (helo=jubjub.nabble.com) by talk.nabble.com with esmtp (Exim 4.50) id 1GBHji-00051d-Ad for gdb@sources.redhat.com; Thu, 10 Aug 2006 14:06:38 -0700 Message-ID: <5752608.post@talk.nabble.com> Date: Thu, 10 Aug 2006 21:06:00 -0000 From: Richard To: gdb@sources.redhat.com Subject: Re: fork debugging : back to parent. In-Reply-To: <5693501.post@talk.nabble.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit References: <5693501.post@talk.nabble.com> X-IsSubscribed: yes Mailing-List: contact gdb-help@sourceware.org; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-owner@sourceware.org X-SW-Source: 2006-08/txt/msg00090.txt.bz2 Incidentally, I also tried "set $tmp=parent_id" (I made an api call to get the parent proc id in the child fork), and in the child I tried to "attach $tmp", but it said there was no such process. Is it not possible to use convenience variables for things like "attach"? "attach parent_id" worked fine. Richard wrote: > > Below is the code from "Advanced programming in the Unix environment". if > I set follow-fork to child, I can step ok to the exclp line. But how do I > get back to debugging the parent process? Is it possible? I tried setting > follow-fork back to "parent" and then "c"ontinuing but no joy. or do I > have to specifically save process ids and reattach to the parent process? > > ======= > #include "apue.h" > #include > > int > main(void) > { > char buf[MAXLINE]; /* from apue.h */ > pid_t pid; > int status; > > printf("%% "); /* print prompt (printf requires %% to print %) */ > while (fgets(buf, MAXLINE, stdin) != NULL) { > if (buf[strlen(buf) - 1] == '\n') > buf[strlen(buf) - 1] = 0; /* replace newline with null */ > > if ((pid = fork()) < 0) { > err_sys("fork error"); > } else if (pid == 0) { /* child */ > execlp(buf, buf, (char *)0); > err_ret("couldn't execute: %s", buf); > exit(127); > } > > /* parent */ > if ((pid = waitpid(pid, &status, 0)) < 0) > err_sys("waitpid error"); > printf("%% "); > } > exit(0); > } > -- View this message in context: http://www.nabble.com/fork-debugging-%3A-back-to-parent.-tf2067795.html#a5752608 Sent from the gdb - General forum at Nabble.com.