]> granicus.if.org Git - strace/commitdiff
Add debug output in initial attachment code
authorDenys Vlasenko <dvlasenk@redhat.com>
Fri, 24 Jun 2011 14:51:16 +0000 (16:51 +0200)
committerDenys Vlasenko <dvlasenk@redhat.com>
Fri, 24 Jun 2011 14:51:16 +0000 (16:51 +0200)
* strace.c (startup_attach): If -d, report pid and success/failure
  of every attach attempt.

Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
strace.c

index d6788d5de3904e69703773d72386a691df11d3ea..f22375aef0374c8dcedebff48cb77dd5e55fa796 100644 (file)
--- a/strace.c
+++ b/strace.c
@@ -471,13 +471,20 @@ startup_attach(void)
                                        if (tid <= 0)
                                                continue;
                                        ++ntid;
-                                       if (ptrace(PTRACE_ATTACH, tid, (char *) 1, 0) < 0)
+                                       if (ptrace(PTRACE_ATTACH, tid, (char *) 1, 0) < 0) {
                                                ++nerr;
-                                       else if (tid != tcbtab[tcbi]->pid) {
-                                               tcp = alloctcb(tid);
-                                               tcp->flags |= TCB_ATTACHED|TCB_CLONE_THREAD;
-                                               tcbtab[tcbi]->nclone_threads++;
-                                               tcp->parent = tcbtab[tcbi];
+                                               if (debug)
+                                                       fprintf(stderr, "attach to pid %d failed\n", tid);
+                                       }
+                                       else {
+                                               if (debug)
+                                                       fprintf(stderr, "attach to pid %d succeeded\n", tid);
+                                               if (tid != tcbtab[tcbi]->pid) {
+                                                       tcp = alloctcb(tid);
+                                                       tcp->flags |= TCB_ATTACHED|TCB_CLONE_THREAD;
+                                                       tcbtab[tcbi]->nclone_threads++;
+                                                       tcp->parent = tcbtab[tcbi];
+                                               }
                                        }
                                        if (interactive) {
                                                sigprocmask(SIG_SETMASK, &empty_set, NULL);
@@ -508,6 +515,8 @@ startup_attach(void)
                        droptcb(tcp);
                        continue;
                }
+               if (debug)
+                       fprintf(stderr, "attach to pid %d (main) succeeded\n", tcp->pid);
                /* INTERRUPTED is going to be checked at the top of TRACE.  */
 
                if (daemonized_tracer) {
@@ -528,7 +537,7 @@ startup_attach(void)
                        fprintf(stderr,
                                "Process %u attached - interrupt to quit\n",
                                tcp->pid);
-       }
+       } /* for each tcbtab[] */
 
        if (interactive)
                sigprocmask(SIG_SETMASK, &empty_set, NULL);