Ryan Goodfellow <rgoodfel_at_eecs.wsu.edu> wrote: > Today I downloaded and installed FreeBSD 9.0-RELEASE and followed the > directions from <http://wiki.freebsd.org/DTrace> to get DTrace up and > running. The output of DTrace instrumenting a simple program, however, > is not correct. The program is as follows: > > // test.cc > #include<cstdlib> > > int main(void) { > for(int i = 0; i < 5; i++) { > malloc(47); > } > } > > then compiling and running DTrace as follows: > > g++ test.cc -o test > > dtrace -n 'pid$target::malloc:entry{ }' -c ./test > > > The correct output for this example is something to the tune of: > > dtrace: description 'pid$target::malloc:entry' matched 2 probes > dtrace: pid 95236 has exited > CPU ID FUNCTION:NAME > 0 188748 malloc:entry > 0 188748 malloc:entry > 0 188748 malloc:entry > 0 188748 malloc:entry > 0 188748 malloc:entry > > (this from a machine with the same code running DTrace) > > The DTrace session should also make an immediate exit on completion. On > FreeBSD I have the following CPU ID FUNCTION:NAME > 2 42213 malloc:entry > > and the execution does either not exit on it's own or hangs, it requires > a ctrl-c. Doesn't work for me either on 10-CURRENT amd64. Converting it to C doesn't make a difference, it works if one changes the loop to "for (;;)", though. > I followed the instructions from the FreeBSD site exactly, compiling and > installing the custom kernel. I used both clang++ and g++ for > compilation with the same result. The system has even completely hung > on other attempts. > > Is DTrace not something that should be relied upon in FreeBSD? I have > also tried this on the latest 10-CURRENT build with the same result. In my opinion the problem with DTrace on FreeBSD is that while it's known to be incomplete, there doesn't seem to be documentation available about which parts are supposed to work already and which aren't. For example the trivial example program at: http://wiki.freebsd.org/DTrace/userland (which works for me) doesn't actually use a counting loop, so maybe dtracing your example program isn't supposed to work yet and never did on FreeBSD. Without documentation it's hard to tell. Fabian
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:28 UTC