From: Dmitry V. L. <ld...@al...> - 2011-03-11 20:53:18
|
On Thu, Mar 10, 2011 at 12:26:08PM +0100, Denys Vlasenko wrote: > + in_job_control_stop = 0; > + if (WSTOPSIG(status) == SIGSTOP || > + WSTOPSIG(status) == SIGTSTP || > + WSTOPSIG(status) == SIGTTIN || > + WSTOPSIG(status) == SIGTTOU) { > + /* > + * PTRACE_GETSIGINFO fails if this is > + * genuine *stop* notification, > + * not *signal* notification > + */ > + siginfo_t si; > + if (ptrace(PTRACE_GETSIGINFO, pid, > + 0, &si) != 0) > + in_job_control_stop = 1; > + } > printleader(tcp); > - tprintf("--- %s (%s) @ %lx (%lx) ---", > + tprintf(in_job_control_stop > + ? "--- stopped by %s ---" > + : "--- %s (%s) @ %lx (%lx) ---", In addition to what I've already written in this thread, I want to point out that, unfortunately, this "stopped by" wording contradicts with reality. The tracee is just trapped, and there are no means to make it really stopped without detaching. -- ldv |