On Tue, Oct 28, 2008 at 01:53:30PM -0700, Adam Mitchell wrote:
> BTW, I replaced "string" with "Xstring" and it works.  If I could avoid 
> touching Apache's files, that would be nice.  But I can live with this.

No need to.  Just do:

#!/usr/sbin/dtrace -Cs

#define __builtin_va_list long
#define __attribute__(x)
#define string Xstring
#include <httpd.h>
#undef string
...


> Thanks for the help everybody!
> 
> I want to share this with anyone who will come looking for this later:
> 
> Copy the Apache header files to a work directory:
> 
> # cp -R /opt/apache/include /export/home/amitchel 
> 

> My command line:
> 
> 
> dtrace -32 -C -I /export/home/amitchel/include -x cpppath=/usr/sfw/bin/cpp 
> -Xs -s watchApacheRequests.d -p 843
> 
> My script:
> #!/usr/sbin/dtrace
> 
> #define __builtin_va_list long
> #define __attribute__(x)
> #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);
> }
> 
> 
> 
> You'll get some errors like this because of the 'string' reserved keyword:
> 
> cc1: warning: /dev/fd/6 is shorter than expected
> dtrace: failed to compile script watchApacheRequests.d: 
> "/export/home/amitchel/include/ap_regex.h", line 117: syntax error near 
> "string"
> 
> 
> Edit the file, replace 'string' with 'Xstring' and try again.  I had to edit 
> these files:
> 
> /export/home/amitchel/include/ap_regex.h
> /export/home/amitchel/include/httpd.h
> 
> 
> And here's the script output:
> 
>   0  49008                         :tick-5s 
>   /hello                                            
>            value  ------------- Distribution ------------- count    
>                1 |                                         0        
>                2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
>                4 |                                         0        
> 
>   /page1                                            
>            value  ------------- Distribution ------------- count    
>                1 |                                         0        
>                2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
>                4 |                                         0        
> 
>   /pageTwo                                          
>            value  ------------- Distribution ------------- count    
>                1 |                                         0        
>                2 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1        
>                4 |                                         0
> -- 
> This message posted from opensolaris.org
> _______________________________________________
> dtrace-discuss mailing list
> dtrace-discuss@opensolaris.org
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to