strace -T to toggle stracing of a process doesn't seem to work at the moment.
Attached is a patch to make it work again.
2011-09-08 Jon TURNEY jon.tur...@dronecode.org.uk
* include/sys/strace.h (strace): Add toggle() method
* strace.cc (toggle): Implement toggle() method
* sigproc.cc (wait_sig): Use strace.toggle() in __SIGSTRACE
Fix 'strace -T -pid=pid'
Index: cygwin/include/sys/strace.h
===
--- cygwin/include/sys/strace.h.orig
+++ cygwin/include/sys/strace.h
@@ -40,6 +40,7 @@ class strace
unsigned char _active;
public:
void activate ();
+ void toggle ();
strace () {activate ();}
int microseconds ();
int version;
Index: cygwin/sigproc.cc
===
--- cygwin/sigproc.cc.orig
+++ cygwin/sigproc.cc
@@ -1194,7 +1194,7 @@ wait_sig (VOID *)
talktome (pack.si);
break;
case __SIGSTRACE:
- strace.activate ();
+ strace.toggle ();
strace.hello ();
break;
case __SIGPENDING:
Index: cygwin/strace.cc
===
--- cygwin/strace.cc.orig
+++ cygwin/strace.cc
@@ -43,6 +43,21 @@ strace::activate ()
}
void
+strace::toggle()
+{
+ if (active())
+{
+ /* turn off stracing */
+ _active ^= 1;
+}
+ else
+{
+ /* announcing _STRACE_INTERFACE_ACTIVATE_ADDR makes the stracer turn on
stracing */
+ activate ();
+}
+}
+
+void
strace::hello ()
{
if (active ())