Run the application you want to trace as
- apitrace trace application [args...]
+ /path/to/apitrace trace /path/to/application [args...]
and it will generate a trace named `application.trace` in the current
directory. You can specify the written trace filename by setting the
/path/to/qapitrace application.trace
-Special notes on "apitrace trace" for Linux
--------------------------------------------
-The "apitrace trace" command uses the `LD_PRELOAD` mechanism which
-should work with most applications. There are some applications,
-e.g., Unigine Heaven, which global function pointers with the same
-name as GL entrypoints, living in a shared object that wasn't linked
-with `-Bsymbolic` flag, so relocations to those globals function
-pointers get overwritten with the address to our wrapper library, and
-the application will segfault when trying to write to them.
-
-For these applications it is possible to trace by using `glxtrace.so`
-as an ordinary `libGL.so` and injecting into `LD_LIBRARY_PATH`:
-
- ln -s glxtrace.so libGL.so
- ln -s glxtrace.so libGL.so.1
- ln -s glxtrace.so libGL.so.1.2
- export LD_LIBRARY_PATH=/path/to/directory/where/glxtrace/is:$LD_LIBRARY_PATH
- export TRACE_LIBGL=/path/to/real/libGL.so.1
- /path/to/application
-
-See the `ld.so` man page for more information about `LD_PRELOAD` and
-`LD_LIBRARY_PATH` environment flags.
-
-
-Special notes on "apitrace trace" for Mac OS X
-----------------------------------------------
-On Mac OS X the "apitrace trace" command sets the following
-environment variable before executing the program:
-
- DYLD_LIBRARY_PATH=/path/to/apitrace/wrappers
-
-Note that although Mac OS X has an `LD_PRELOAD` equivalent,
-`DYLD_INSERT_LIBRARIES`, it is mostly useless because it only works
-with `DYLD_FORCE_FLAT_NAMESPACE=1` which breaks most applications.
-See the `dyld` man page for more details about these environment
-flags.
-
Windows
-------
===========================
+Tracing manually
+----------------
+
+### Linux ###
+
+Run the application you want to trace as
+
+ LD_PRELOAD=/path/to/apitrace/wrappers/glxtrace.so /path/to/application
+
+and it will generate a trace named `application.trace` in the current
+directory. You can specify the written trace filename by setting the
+`TRACE_FILE` environment variable before running.
+
+The `LD_PRELOAD` mechanism should work with most applications. There are some
+applications, e.g., Unigine Heaven, which global function pointers with the
+same name as GL entrypoints, living in a shared object that wasn't linked with
+`-Bsymbolic` flag, so relocations to those globals function pointers get
+overwritten with the address to our wrapper library, and the application will
+segfault when trying to write to them. For these applications it is possible
+to trace by using `glxtrace.so` as an ordinary `libGL.so` and injecting into
+`LD_LIBRARY_PATH`:
+
+ ln -s glxtrace.so wrappers/libGL.so
+ ln -s glxtrace.so wrappers/libGL.so.1
+ ln -s glxtrace.so wrappers/libGL.so.1.2
+ export LD_LIBRARY_PATH=/path/to/apitrace/wrappers:$LD_LIBRARY_PATH
+ export TRACE_LIBGL=/path/to/real/libGL.so.1
+ /path/to/application
+
+See the `ld.so` man page for more information about `LD_PRELOAD` and
+`LD_LIBRARY_PATH` environment flags.
+
+### Mac OS X ###
+
+Run the application you want to trace as
+
+ DYLD_LIBRARY_PATH=/path/to/apitrace/wrappers /path/to/application
+
+Note that although Mac OS X has an `LD_PRELOAD` equivalent,
+`DYLD_INSERT_LIBRARIES`, it is mostly useless because it only works with
+`DYLD_FORCE_FLAT_NAMESPACE=1` which breaks most applications. See the `dyld` man
+page for more details about these environment flags.
+
+
Emitting annotations to the trace from GL applications
------------------------------------------------------
Comparing two traces side by side
---------------------------------
- ./scripts/tracediff.sh trace1.trace trace2.trace
+ apitrace diff trace1.trace trace2.trace
This works only on Unices, and it will truncate the traces due to performance
limitations.