[Ltrace-devel] Re: [Fwd: Patch for tracing fork]

supriya kannery supriyak at in.ibm.com
Wed Oct 4 09:56:23 UTC 2006


Skipped content of type multipart/alternative-------------- next part --------------
ltrace/ltrace/trunk # ./ltrace -f /home/supriya/trace-fork
_start(1, 0xff9de384, 0xff9de38c, 0xff9de484, 0xf7fefac0 <unfinished ...>
__libc_start_main(1, 0xff9de384, 0xff9de38c, 0xff9de484, 0xf7fefac0 <unfinished ...>
__gmon_start__(1, 0xff9de384, 0xff9de38c, 0xff9de484, 0xf7fefac0 <unfinished ...>
fork(1, 0xff9de384, 0xff9de38c, 0xff9de484, 0 <unfinished ...>
[pid 1020] --- SIGSTOP (Stopped (signal)) ---
[pid 1019] <... fork resumed> )                  = 1020
[pid 1019] printf(0x10000a98, 1020, 1, 0, 0xf7fc7048 <unfinished ...>
[pid 1020] --- SIGSTOP (Stopped (signal)) ---
[pid 1020] puts(0x10000a7c, 0, 0, 0, 1My child pid is 1020
 <unfinished ...>
[pid 1020] sleep(0x10000a7c, 0, 0, 0, 1 <unfinished ...>
[pid 1019] <... printf resumed> )                = 21
[pid 1019] wait(21, 0xf7fdf000, 21, 0, -1 <unfinished ...>
[pid 1019] __gmon_start__(21, 0xf7fdf000, 21, 0, -1Fork Child
 <unfinished ...>
[pid 1020] <... sleep resumed> )                 = 11
[pid 1020] sleep(1, 0xf7fdf000, 11, 1, -1)       = 0
[pid 1020] +++ exited (status 0) +++
--- SIGCHLD (Child exited) ---
<... __gmon_start__ resumed> )                   = -1
+++ exited (status 0) +++
-------------------------------------------------------------------------------

ltrace/ltrace/trunk-mod # ./ltrace -f /home/supriya/trace-fork
__libc_start_main(1, 0xffd3c384, 0xffd3c38c, 0xffd3c484, 0xf7fefac0 <unfinished ...>
__gmon_start__(1, 0xffd3c384, 0xffd3c38c, 0xffd3c484, 0xf7fefac0 <unfinished ...>
fork(1, 0xffd3c384, 0xffd3c38c, 0xffd3c484, 0 <unfinished ...>
[pid 972] puts(0x10000a7c, 0, 0, 0, 1 <unfinished ...>
[pid 971] <... fork resumed> )                   = 972
[pid 971] printf(0x10000a98, 972, 1, 0, 0xf7fc7048 <unfinished ...>
[pid 972] sleep(0x10000a7c, 0, 0, 0, 1My child pid is 972
Fork Child
 <unfinished ...>
[pid 971] <... printf resumed> )                 = 20
[pid 971] wait(20, 0xf7fdf000, 20, 0, -1 <unfinished ...>
[pid 972] <... sleep resumed> )                  = 11
[pid 971] __gmon_start__(20, 0xf7fdf000, 20, 0, -1 <unfinished ...>
[pid 972] sleep(1, 0xf7fdf000, 11, 1, -1)        = 0
[pid 972] +++ exited (status 0) +++
--- SIGCHLD (Child exited) ---
<... __gmon_start__ resumed> )                   = -1
+++ exited (status 0) +++
-------------------------------------------------------------------------------

ltrace/ltrace # uname -a
Linux llm23 2.6.16.21-0.8-ppc64 #5 SMP Sat Aug 26 03:12:15 IST 2006 ppc64
-------------------------------------------------------------------------------
Test program:

/ltrace/ltrace # cat /home/supriya/trace-fork.c
/*Ltrace Test : trace-fork.c
   Objectives  : Verify that ltrace can trace to child process after
   fork called.
                                                                                
   This file was written by Yao Qi <qiyao at cn.ibm.com>.  */
                                                                                
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
void
child ()
{
  printf("Fork Child\n");
  sleep(1);
}
                                                                                
int
main ()
{
  pid_t pid;
  pid = fork ();
                                                                                
  if (pid == -1)
    printf("fork failed!\n");
  else if (pid == 0)
    child();
  else
    {
      printf("My child pid is %d\n",pid);
      wait();
    }
  return 0;
}



More information about the Ltrace-devel mailing list