From: José Fonseca Date: Thu, 3 Nov 2011 12:30:18 +0000 (+0000) Subject: Keep info on how to manually retrace in a separate section. X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;ds=sidebyside;h=7edf24af39068a3c58ebe232f94d5882d42d721b;p=apitrace Keep info on how to manually retrace in a separate section. --- diff --git a/README.markdown b/README.markdown index 2764c59..4954053 100644 --- a/README.markdown +++ b/README.markdown @@ -21,7 +21,7 @@ Linux and Mac OS X 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 @@ -42,43 +42,6 @@ Start the GUI as /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 ------- @@ -101,6 +64,50 @@ Advanced command line usage =========================== +Tracing manually +---------------- + +### Linux ### + +Run the application you want to trace as + + LD_PRELOAD=/path/to/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 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. + +### 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 ------------------------------------------------------