Tracing an Application That Is Already Running
Previous versions of the Graphics Analyzer could be attached to a running process but would be missing any data (assets/state, etc.) that would have been traced prior to starting intercepting. Starting with version 3.5.0 it is possible to attach to a process that is already running and recover almost all of the state of the OpenGL ES and EGL APIs, despite having not intercepted all of the calls from the application. Furthermore it is now also possible to attach and detach from the same process multiple times within a single trace. This allows skipping tracing parts of the application that are not interesting.
To intercept an already running application the daemon must have been started before the application was launched, but it is not necessary to connect the host to the target until the appropriate part of the application is about to be reached.
To detach from an application that is being traced, select the toggle button from the toolbar. When the application is detached from the debugger, the button will be depressed. To reattach, simply toggle the same button. Function calls that contain information about the target API's state following an attach will be marked with the icon as will frames in the outline view. A bookmark will also be generated for the reattach function to aid navigation.
A non-exhaustive list of things that may not be recovered are:
- OpenGL ES 1.1 contexts may not be supported correctly.
- Anything defined within an extension that is not part of a later revision of an API.
- Buffer contents on OpenGL ES 2.0 only devices that do not support the GL_EXT_map_buffer_range extension.
- Buffer contents on any API version where the contents of the buffer are mapped at the point the host attaches, unless the full buffer was mapped as readable.
- Texture data for most textures other than color renderable GL_TEXTURE_2D textures (and only for mipmap-level 0).
- Program pipeline objects.
- Programs and shaders that are created from binaries rather than from sources may not be supported correctly.