]> git.cworth.org Git - apitrace/log
apitrace
11 years agoImproved GPU profiling code.
James Benton [Mon, 23 Jul 2012 14:26:54 +0000 (15:26 +0100)]
Improved GPU profiling code.

Now only allows a certain number of active queries,
this fixes results with applications that have many draw calls.

11 years agoAdd support for basic GPU profiling of draw calls to retrace.
James Benton [Fri, 20 Jul 2012 17:56:19 +0000 (18:56 +0100)]
Add support for basic GPU profiling of draw calls to retrace.

Currently only supports opengl using glBegin/EndQuery and glQueryCounter.

Based on code from Yuanhan Liu timing-trace branch.

11 years agoMerge commit '5c298db8fe117e0a445af051335aa0da91c3a31b'
José Fonseca [Thu, 12 Jul 2012 12:44:59 +0000 (13:44 +0100)]
Merge commit '5c298db8fe117e0a445af051335aa0da91c3a31b'

11 years agoEliminate destroyContext.
José Fonseca [Wed, 11 Jul 2012 11:14:31 +0000 (12:14 +0100)]
Eliminate destroyContext.

Same as releaseContext.

11 years agoFix build on MSVC.
José Fonseca [Mon, 9 Jul 2012 10:16:50 +0000 (11:16 +0100)]
Fix build on MSVC.

11 years agoFix wglDeleteContext tracing.
José Fonseca [Mon, 9 Jul 2012 09:36:01 +0000 (10:36 +0100)]
Fix wglDeleteContext tracing.

wglGetCurrentContext must be called before.

11 years agoFix CGL.
José Fonseca [Mon, 9 Jul 2012 09:47:16 +0000 (10:47 +0100)]
Fix CGL.

11 years agoFix build. Add copyright header to new files.
José Fonseca [Sun, 8 Jul 2012 12:16:48 +0000 (13:16 +0100)]
Fix build. Add copyright header to new files.

11 years agoRelocate tracing (dis/en)enablement.
José Fonseca [Sat, 7 Jul 2012 11:54:09 +0000 (12:54 +0100)]
Relocate tracing (dis/en)enablement.

Out of common -- as it is tracing specific

11 years agoAndroid: add usage instructions for tracing zygote applications
Imre Deak [Fri, 30 Mar 2012 12:44:39 +0000 (15:44 +0300)]
Android: add usage instructions for tracing zygote applications

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agoAndroid: add support for dynamically enable/disable tracing
Imre Deak [Fri, 30 Mar 2012 12:46:26 +0000 (15:46 +0300)]
Android: add support for dynamically enable/disable tracing

To trace applications started by the Dalvik VM we have to wrap the main
Dalvik process zygote (or app_process) which is started at boot time and
never stopped afterwards. We would still want to restrict tracing to a
single process which will be forked by zygote.

To achieve this we'll use the fact that the forked process image is
contained in the same file as zygote, pointed to by /proc/self/exe. So
if this is 'app_process' we know it's a zygote process. To distinguish
between zygote processes we'll check /proc/self/cmdline which will in
turn be set to a unique application specific string (for example
com.android.settings). The user has to set the debug.apitrace.procname
to this string in order to enable tracing.

For non-zygote processes tracing will be always enabled.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agoMerge pull request #88 from gregory38/image-alpha-channel-I84-v2
zackr [Sat, 7 Jul 2012 00:10:22 +0000 (17:10 -0700)]
Merge pull request #88 from gregory38/image-alpha-channel-I84-v2

Image alpha channel i84 v2

11 years agoMerge pull request #87 from gregory38/multiple-line-errors
zackr [Sat, 7 Jul 2012 00:08:30 +0000 (17:08 -0700)]
Merge pull request #87 from gregory38/multiple-line-errors

glsl edit: grep multiline error/warning messages

11 years agoglsl edit: grep multiline error/warning messages
gregory [Fri, 6 Jul 2012 19:48:59 +0000 (21:48 +0200)]
glsl edit: grep multiline error/warning messages

Useful for GL shader errors which spawn multiple lines error message like that:
    >> 2135: warning: Vertex shader failed to compile with the following errors:
    >> ERROR: 1:1: error(#132) Syntax error: 'sdfsafasf' parse error
    >> ERROR: error(#273) 1 compilation errors.  No code generated

11 years agogui: Fix editing of the shaders
Zack Rusin [Fri, 6 Jul 2012 19:53:29 +0000 (15:53 -0400)]
gui: Fix editing of the shaders

Editing shaders was broken because we were adding extra values to
the arguments array. This fixes it, meaning that if you right click
on glShaderSource you can edit the shader source and the rest of the
trace will properly catch the changes. An incredibly useful feature.

11 years agogui: remove a depth check box that sneak into alpha code
gregory [Sun, 1 Jul 2012 16:57:10 +0000 (18:57 +0200)]
gui: remove a depth check box that sneak into alpha code

11 years agogui: new checkbox to visualize alpha channel of image
gregory [Sun, 1 Jul 2012 15:18:04 +0000 (17:18 +0200)]
gui: new checkbox to visualize alpha channel of image

11 years agoHandle windows when retracing CreateAdditionalSwapChain
José Fonseca [Fri, 22 Jun 2012 18:36:31 +0000 (19:36 +0100)]
Handle windows when retracing CreateAdditionalSwapChain

11 years agoTrace IDirect3DSwapChain9Ex interface too.
José Fonseca [Fri, 22 Jun 2012 16:27:56 +0000 (17:27 +0100)]
Trace IDirect3DSwapChain9Ex interface too.

11 years agoAvoid walking off array if given a negative value for array size.
Carl Worth [Mon, 4 Jun 2012 21:47:33 +0000 (14:47 -0700)]
Avoid walking off array if given a negative value for array size.

Obviously, a negative size is bogus, but we want apitrace to be robust
enough to capture even bogus usage of the API, (so that the user can
investigate and fix the bogosity in the application).

In this case, if the user specifies a negative size for an array,
simply don't write anything out for the array content.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agoSkip glEnable/Disable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) (issue #83).
Gregory Hainaut [Mon, 11 Jun 2012 12:58:22 +0000 (13:58 +0100)]
Skip glEnable/Disable(GL_DEBUG_OUTPUT_SYNCHRONOUS_ARB) (issue #83).

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agomt trace: wgl: track GL context on a per-thread basis
Imre Deak [Wed, 23 May 2012 07:57:12 +0000 (10:57 +0300)]
mt trace: wgl: track GL context on a per-thread basis

Wrap WGL context handling calls and keep our own per-thread basis track
of the context object.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agomt trace: glx: track GL context on a per-thread basis
Imre Deak [Wed, 23 May 2012 07:56:57 +0000 (10:56 +0300)]
mt trace: glx: track GL context on a per-thread basis

Wrap GLX context handling calls and keep our own per-thread basis track
of the context object.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agomt trace: egl: track GL context on a per-thread basis
Imre Deak [Wed, 23 May 2012 07:56:35 +0000 (10:56 +0300)]
mt trace: egl: track GL context on a per-thread basis

Wrap EGL context handling calls and keep our own per-thread basis track
of the context object.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agocheck for error in eglMakeCurrent wrapper
Imre Deak [Mon, 21 May 2012 10:55:40 +0000 (13:55 +0300)]
check for error in eglMakeCurrent wrapper

In case of error we shouldn't update our book-keeping.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agomt trace: cgl: track GL context on a per-thread basis
Imre Deak [Wed, 23 May 2012 07:56:06 +0000 (10:56 +0300)]
mt trace: cgl: track GL context on a per-thread basis

Wrap CGL context handling calls and keep our own per-thread basis track
of the context object.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agomt trace: add helper to track GL contexts on a per-thread basis
Imre Deak [Mon, 7 May 2012 06:10:26 +0000 (09:10 +0300)]
mt trace: add helper to track GL contexts on a per-thread basis

This is needed for muti-threaded tracing to work properly.

Tracing multi-threaded GL apps requires that we track the lifetime of
the GL context objects and store thread specific state like the currently
active GL context on thread-local memory area.

Also add 'retain_count' to the context needed by the CGL retain/release
context calls.

Needed by the 4 upcoming GL API specific patches.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agomt trace: create gltrace_state.cpp, move getContext into it
Imre Deak [Thu, 3 May 2012 14:33:13 +0000 (17:33 +0300)]
mt trace: create gltrace_state.cpp, move getContext into it

There is no need to keep this function in a python script and the
following patches will extend the functionality around this code, so
move the function to a .cpp file.

Signed-off-by: Imre Deak <imre.deak@intel.com>
11 years agotrace: add support for tracing GL_OES_draw_texture calls
Imre Deak [Mon, 23 Apr 2012 13:18:39 +0000 (16:18 +0300)]
trace: add support for tracing GL_OES_draw_texture calls

These are present at least in the Android EGL implementation.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agoExport undocumented Android gl*PointerBounds entrypoints.
José Fonseca [Thu, 17 May 2012 21:06:11 +0000 (22:06 +0100)]
Export undocumented Android gl*PointerBounds entrypoints.

Used in Dalvik.

11 years agoCompute the vertex buffer sizes in term of vertex count.
José Fonseca [Thu, 17 May 2012 20:33:14 +0000 (21:33 +0100)]
Compute the vertex buffer sizes in term of vertex count.

As opposed to max index, given that max index can not represent zero count.

11 years agofilter based on thread_id
Imre Deak [Tue, 8 May 2012 12:20:43 +0000 (15:20 +0300)]
filter based on thread_id

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agomake GLES/glext.hpp guard macro name unique
Imre Deak [Fri, 11 May 2012 16:32:21 +0000 (19:32 +0300)]
make GLES/glext.hpp guard macro name unique

We want to include both GL/glext.hpp and GLES/glext.hpp but they are
guarded using the same macro name. Make them unique.

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agoPickle Repr nodes too.
José Fonseca [Thu, 17 May 2012 07:38:04 +0000 (08:38 +0100)]
Pickle Repr nodes too.

11 years agoadd debug option for debug builds
Imre Deak [Fri, 20 Apr 2012 13:34:31 +0000 (16:34 +0300)]
add debug option for debug builds

Signed-off-by: Imre Deak <imre.deak@intel.com>
Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
11 years agoUse appropriate number of digits when dumping floating point numbers.
José Fonseca [Mon, 14 May 2012 19:20:44 +0000 (20:20 +0100)]
Use appropriate number of digits when dumping floating point numbers.

11 years agoTry to disassemble d3d10 shaders too.
José Fonseca [Sun, 13 May 2012 14:08:37 +0000 (15:08 +0100)]
Try to disassemble d3d10 shaders too.

11 years agoRename d3dshader.* -> d3d9shader.*
José Fonseca [Sun, 13 May 2012 10:41:08 +0000 (11:41 +0100)]
Rename d3dshader.* -> d3d9shader.*

11 years agoFactor out object swizzling.
José Fonseca [Sun, 13 May 2012 09:22:07 +0000 (10:22 +0100)]
Factor out object swizzling.

11 years agoSplit retrace swizlling helpers.
José Fonseca [Sun, 13 May 2012 09:04:19 +0000 (10:04 +0100)]
Split retrace swizlling helpers.

11 years agoMove d3d window creation to a separate source file.
José Fonseca [Sun, 13 May 2012 08:45:04 +0000 (09:45 +0100)]
Move d3d window creation to a separate source file.

11 years agoDescribe a few more parameters.
José Fonseca [Sun, 13 May 2012 07:56:10 +0000 (08:56 +0100)]
Describe a few more parameters.

12 years agoDump a few more parameters.
José Fonseca [Sat, 12 May 2012 11:19:44 +0000 (12:19 +0100)]
Dump a few more parameters.

12 years agoAdd multiarch support.
Michal Suchanek [Mon, 7 May 2012 14:07:16 +0000 (16:07 +0200)]
Add multiarch support.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
12 years agoAvoid glCreateShaderProgramv when dumping satate so that the shader
José Fonseca [Fri, 11 May 2012 13:55:50 +0000 (14:55 +0100)]
Avoid glCreateShaderProgramv when dumping satate so that the shader
source can be recovered.

12 years agoTake in consideration the pipeline when dumping shaders/uniforms.
Gregory Hainaut [Fri, 11 May 2012 13:54:18 +0000 (14:54 +0100)]
Take in consideration the pipeline when dumping shaders/uniforms.

A new member for JSON is created for each stage to separate easily the
different stages.

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
12 years agoTry active shader program before current program.
Gregory Hainaut [Fri, 11 May 2012 13:49:10 +0000 (14:49 +0100)]
Try active shader program before current program.

With separate shader program, one can't query anymore current program
with glGetIntegerv(GL_CURRENT_PROGRAM, &program), so glUniform* fails to
store the correct location during retracing.

Technically glActiveShaderProgram must be used to set the active program
for Uniform. But on my system (AMD) it works without it, I don't know if
it is valid or not.

This change uses the active shader (would be 0 if the users don't call
glActiveShaderProgram) instead of current program (0 in pipeline mode)

Signed-off-by: José Fonseca <jose.r.fonseca@gmail.com>
12 years agoPass INFO_LOG warnings in glCreateShaderProgramv/glCreateShaderProgramEXT.
José Fonseca [Fri, 11 May 2012 13:16:49 +0000 (14:16 +0100)]
Pass INFO_LOG warnings in glCreateShaderProgramv/glCreateShaderProgramEXT.

12 years agoFix auto completion typo.
Gregory Hainaut [Thu, 10 May 2012 17:57:08 +0000 (18:57 +0100)]
Fix auto completion typo.

12 years agoEnsure alloca is declared.
José Fonseca [Thu, 10 May 2012 16:28:31 +0000 (17:28 +0100)]
Ensure alloca is declared.

12 years agoSupport dumping uniform buffer objects (issue #75).
José Fonseca [Thu, 10 May 2012 12:18:38 +0000 (13:18 +0100)]
Support dumping uniform buffer objects (issue #75).

Based on Gregory Hainaut's prototype.

12 years agoDon't attempt to dump built-in uniforms.
José Fonseca [Thu, 10 May 2012 08:36:59 +0000 (09:36 +0100)]
Don't attempt to dump built-in uniforms.

12 years agoSilent bogus warnings.
José Fonseca [Wed, 9 May 2012 20:57:10 +0000 (21:57 +0100)]
Silent bogus warnings.

12 years agoFix D3D11 tracing with D3D11_CREATE_DEVICE_DEBUG flag.
José Fonseca [Wed, 9 May 2012 20:12:30 +0000 (21:12 +0100)]
Fix D3D11 tracing with D3D11_CREATE_DEVICE_DEBUG flag.

12 years agoCleanup return value wrapping.
José Fonseca [Wed, 9 May 2012 18:33:33 +0000 (19:33 +0100)]
Cleanup return value wrapping.

12 years agoPrevent hangs in XCloseDisplay.
José Fonseca [Wed, 9 May 2012 18:33:15 +0000 (19:33 +0100)]
Prevent hangs in XCloseDisplay.

That surfaced with precedent commit.

12 years agoAdd ability to run multiple traces in one time.
Si Chen [Wed, 9 May 2012 17:16:30 +0000 (18:16 +0100)]
Add ability to run multiple traces in one time.

12 years agoSuppress warning when running in benchmark mode.
Si Chen [Wed, 9 May 2012 17:15:42 +0000 (18:15 +0100)]
Suppress warning when running in benchmark mode.

12 years agoFind FXC executable.
José Fonseca [Wed, 9 May 2012 08:23:38 +0000 (09:23 +0100)]
Find FXC executable.

12 years agoStub d3d state dumping.
José Fonseca [Tue, 8 May 2012 22:41:35 +0000 (23:41 +0100)]
Stub d3d state dumping.

12 years agoRefactor d3d9 lock tracking code further.
José Fonseca [Tue, 8 May 2012 22:23:38 +0000 (23:23 +0100)]
Refactor d3d9 lock tracking code further.

12 years agoFix scripts absolute earch path (issue #76).
José Fonseca [Tue, 8 May 2012 14:02:51 +0000 (15:02 +0100)]
Fix scripts absolute earch path (issue #76).

Wrongly copy'n'pasted from wrappers code.

Probably never actually used, as relative search paths where successful.

Thanks to hramrach for spotting it.

12 years agoFix typos in earlier commit.
José Fonseca [Tue, 8 May 2012 11:09:42 +0000 (12:09 +0100)]
Fix typos in earlier commit.

Should have actually looked at the build output before pushing...

12 years agoSet d3d10 sideeffect=False tags.
José Fonseca [Tue, 8 May 2012 08:07:27 +0000 (09:07 +0100)]
Set d3d10 sideeffect=False tags.

12 years agoFix tracediff.py's --width argument conversion (issue #77).
José Fonseca [Tue, 8 May 2012 08:05:53 +0000 (09:05 +0100)]
Fix tracediff.py's --width argument conversion (issue #77).

Thanks for wrabbit-revisited spotting problem and proposing fix.

12 years agoFix less eof communication.
José Fonseca [Tue, 8 May 2012 08:03:05 +0000 (09:03 +0100)]
Fix less eof communication.

12 years agoDon't use D3D9D by default.
José Fonseca [Fri, 4 May 2012 14:10:17 +0000 (15:10 +0100)]
Don't use D3D9D by default.

Too buggy.

12 years agoDon't try to share surfaces.
José Fonseca [Fri, 4 May 2012 14:08:01 +0000 (15:08 +0100)]
Don't try to share surfaces.

12 years agoTrace all d3d10.dll functions.
José Fonseca [Fri, 4 May 2012 10:49:19 +0000 (11:49 +0100)]
Trace all d3d10.dll functions.

12 years agoTweak d3d8 specs.
José Fonseca [Thu, 3 May 2012 13:22:26 +0000 (14:22 +0100)]
Tweak d3d8 specs.

12 years agoFix regression in drawable size estimation.
José Fonseca [Thu, 3 May 2012 10:42:16 +0000 (11:42 +0100)]
Fix regression in drawable size estimation.

12 years agoQuit on escape key.
José Fonseca [Thu, 3 May 2012 10:06:00 +0000 (11:06 +0100)]
Quit on escape key.

12 years agoTrace D3DADAPTER_DEFAULT instead of 0.
José Fonseca [Thu, 3 May 2012 10:04:22 +0000 (11:04 +0100)]
Trace D3DADAPTER_DEFAULT instead of 0.

12 years agoDon't retrace IDirect3DQuery9::GetData.
José Fonseca [Wed, 2 May 2012 15:04:07 +0000 (16:04 +0100)]
Don't retrace IDirect3DQuery9::GetData.

12 years agoHighlight NULL as a literal.
José Fonseca [Wed, 2 May 2012 15:03:26 +0000 (16:03 +0100)]
Highlight NULL as a literal.

12 years agoCount displayed frames on d3dretrace.
José Fonseca [Wed, 2 May 2012 12:17:48 +0000 (13:17 +0100)]
Count displayed frames on d3dretrace.

12 years agoDelete linear regions when retracing unlock.
José Fonseca [Wed, 2 May 2012 12:16:20 +0000 (13:16 +0100)]
Delete linear regions when retracing unlock.

12 years agoFix volume locked size computation.
José Fonseca [Wed, 2 May 2012 12:15:39 +0000 (13:15 +0100)]
Fix volume locked size computation.

12 years agoFix compressed texture size computation.
José Fonseca [Wed, 2 May 2012 12:13:48 +0000 (13:13 +0100)]
Fix compressed texture size computation.

12 years agoEnsure all interface wrapper variables are initialized.
José Fonseca [Wed, 2 May 2012 12:10:07 +0000 (13:10 +0100)]
Ensure all interface wrapper variables are initialized.

12 years agoTrace LockBox blobs.
José Fonseca [Tue, 1 May 2012 21:28:28 +0000 (22:28 +0100)]
Trace LockBox blobs.

12 years agoUse same logic for both Lock and LockRect.
José Fonseca [Mon, 30 Apr 2012 22:33:02 +0000 (23:33 +0100)]
Use same logic for both Lock and LockRect.

12 years agoUse SUCCEEDED macro.
José Fonseca [Mon, 30 Apr 2012 22:18:17 +0000 (23:18 +0100)]
Use SUCCEEDED macro.

12 years agoHandle variations of LockRect.
José Fonseca [Mon, 30 Apr 2012 22:18:05 +0000 (23:18 +0100)]
Handle variations of LockRect.

12 years agoUpdate docs.
José Fonseca [Mon, 30 Apr 2012 21:59:40 +0000 (22:59 +0100)]
Update docs.

12 years agoSupport VS 2011 / Windows 8 SDK.
José Fonseca [Mon, 30 Apr 2012 16:21:58 +0000 (17:21 +0100)]
Support VS 2011 / Windows 8 SDK.

12 years agoEliminate dependency on D3DX10/D3DX11.
José Fonseca [Mon, 30 Apr 2012 15:51:08 +0000 (16:51 +0100)]
Eliminate dependency on D3DX10/D3DX11.

Given that it's being deprecated.

12 years agoSet WINVER to 0x501.
José Fonseca [Mon, 30 Apr 2012 15:34:07 +0000 (16:34 +0100)]
Set WINVER to 0x501.

Must be definedin order to use VectoredExceptionHandler on Windows 8 SDK.

12 years agoCode cleanups.
José Fonseca [Mon, 30 Apr 2012 15:32:34 +0000 (16:32 +0100)]
Code cleanups.

Detected by MSVC11.

12 years agoAdd missing sign cast.
José Fonseca [Mon, 30 Apr 2012 14:25:15 +0000 (15:25 +0100)]
Add missing sign cast.

12 years agoRemove tchar.h includes.
José Fonseca [Mon, 30 Apr 2012 14:24:46 +0000 (15:24 +0100)]
Remove tchar.h includes.

Not really used.

12 years agoFactor out the lock rect size computation.
José Fonseca [Sun, 29 Apr 2012 22:22:52 +0000 (23:22 +0100)]
Factor out the lock rect size computation.

12 years agoTry to trace D3D11.1 where available.
José Fonseca [Sat, 28 Apr 2012 22:22:47 +0000 (23:22 +0100)]
Try to trace D3D11.1 where available.

Untested.

12 years agoTry to interpret the SAL annotations.
José Fonseca [Sat, 28 Apr 2012 22:21:58 +0000 (23:21 +0100)]
Try to interpret the SAL annotations.

12 years agoTry to cope with Win 8 SDK headers.
José Fonseca [Sat, 28 Apr 2012 22:21:30 +0000 (23:21 +0100)]
Try to cope with Win 8 SDK headers.

12 years agoFind DirectX 11.1 headers too.
José Fonseca [Sat, 28 Apr 2012 21:57:42 +0000 (22:57 +0100)]
Find DirectX 11.1 headers too.

12 years agoHandle IID wrapping of non void pointers.
José Fonseca [Sat, 28 Apr 2012 20:45:38 +0000 (21:45 +0100)]
Handle IID wrapping of non void pointers.

12 years agoRudimentary surface lock rect retrace support.
José Fonseca [Fri, 27 Apr 2012 17:15:11 +0000 (18:15 +0100)]
Rudimentary surface lock rect retrace support.

12 years agoPreserve both D3D9 shader byte code, and disassembly.
José Fonseca [Fri, 27 Apr 2012 16:15:32 +0000 (17:15 +0100)]
Preserve both D3D9 shader byte code, and disassembly.

12 years agoDon't retrace calls that failed when tracing.
José Fonseca [Fri, 27 Apr 2012 12:02:08 +0000 (13:02 +0100)]
Don't retrace calls that failed when tracing.