Răsfoiți Sursa

docs: Update stderr and simple backend, add systemtap backend

The following additions to the tracing documentation are included:

1. Move "stderr" backend documentation to top-level and out of "simple"
   backend.  Include hints on when this backend is useful.

2. Document the "simple" backend thread-safety limitation.

3. Document the "dtrace" backend for SystemTap.

Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Stefan Hajnoczi 14 ani în urmă
părinte
comite
b48c20f723
1 a modificat fișierele cu 26 adăugiri și 4 ștergeri
  1. 26 4
      docs/tracing.txt

+ 26 - 4
docs/tracing.txt

@@ -126,6 +126,14 @@ The "nop" backend generates empty trace event functions so that the compiler
 can optimize out trace events completely.  This is the default and imposes no
 can optimize out trace events completely.  This is the default and imposes no
 performance penalty.
 performance penalty.
 
 
+=== Stderr ===
+
+The "stderr" backend sends trace events directly to standard error.  This
+effectively turns trace events into debug printfs.
+
+This is the simplest backend and can be used together with existing code that
+uses DPRINTF().
+
 === Simpletrace ===
 === Simpletrace ===
 
 
 The "simple" backend supports common use cases and comes as part of the QEMU
 The "simple" backend supports common use cases and comes as part of the QEMU
@@ -133,10 +141,10 @@ source tree.  It may not be as powerful as platform-specific or third-party
 trace backends but it is portable.  This is the recommended trace backend
 trace backends but it is portable.  This is the recommended trace backend
 unless you have specific needs for more advanced backends.
 unless you have specific needs for more advanced backends.
 
 
-=== Stderr ===
-
-The "stderr" backend sends trace events directly to standard error output
-during emulation.
+Warning: the "simple" backend is not thread-safe so only enable trace events
+that are executed while the global mutex is held.  Much of QEMU meets this
+requirement but some utility functions like qemu_malloc() or thread-related
+code cannot be safely traced using the "simple" backend.
 
 
 ==== Monitor commands ====
 ==== Monitor commands ====
 
 
@@ -187,3 +195,17 @@ consistent.
 The "ust" backend uses the LTTng Userspace Tracer library.  There are no
 The "ust" backend uses the LTTng Userspace Tracer library.  There are no
 monitor commands built into QEMU, instead UST utilities should be used to list,
 monitor commands built into QEMU, instead UST utilities should be used to list,
 enable/disable, and dump traces.
 enable/disable, and dump traces.
+
+=== SystemTap ===
+
+The "dtrace" backend uses DTrace sdt probes but has only been tested with
+SystemTap.  When SystemTap support is detected a .stp file with wrapper probes
+is generated to make use in scripts more convenient.  This step can also be
+performed manually after a build in order to change the binary name in the .stp
+probes:
+
+    scripts/tracetool --dtrace --stap \
+                      --binary path/to/qemu-binary \
+                      --target-type system \
+                      --target-arch x86_64 \
+                      <trace-events >qemu.stp