I am using the "-C" option to invoke the C preprocessor and include Apache's httpd.h in a dtrace script. This lets me dereference Apache's request_rec struct and pull some great per-request details.
But it won't work "out of the box." Dtrace (or the D compiler in libdtrace) fails to parse the cpp output. I have to run cpp manually on httpd.h, saving the output to a monolithic dot-h file and then iteratively remove lines from that file when Dtrace complains about them until I have a "working" file. After that, it's just awesome. I guess my question is, is there any Dtrace debug flag that will give me more information on the parse error? Where are the "-x" (compiler and tracing) options defined? If I understood the parse error (found ABC but expecting XYZ), maybe I could contribute something back. Here's all I see now: $ sudo dtrace -32 -C -I /export/home/amitchel/include -s watchApacheRequestsTestingCPP.d -p 16770 dtrace: failed to compile script watchApacheRequestsTestingCPP.d: "/export/home/amitchel/include/apr_thread_mutex.h", line 100: syntax error near "#" Line 100 is: APR_POOL_DECLARE_ACCESSOR(thread_mutex); My script is: $ cat watchApacheRequestsTestingCPP.d #!/usr/sbin/dtrace #include <httpd.h> pid$target:a.out:ap_process_request:entry { self->ts = timestamp; self->r = (request_rec*) copyin(arg0, sizeof(request_rec)); self->uri = copyinstr((uintptr_t) self->r->uri); } pid$target:a.out:ap_process_request:return /self->ts/ { @request_uris[self->uri] = quantize((timestamp - self->ts) / 1000000); self->ts = 0; self->uri = "err"; } tick-5s { printa(@request_uris); } -- This message posted from opensolaris.org _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org