mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-23 15:06:32 +00:00
Add string messages to returned result codes to display to user
* Most of the main entry points that can fail with relevant reasons now has a way of specifying a message to return with it. This message can be displayed to the user to give more information or context about an error.
This commit is contained in:
@@ -61,5 +61,3 @@ If you have Android Studio open, it will interfere with RenderDoc's debugging by
|
||||
RenderDoc does its best to locate or provide necessary Android tools from the Android SDK. On Windows, these tools are shipped with the distributions and all that's required is java - either in your ``PATH`` or via the ``JAVA_HOME`` environment variable. If these tools aren't present then RenderDoc searches through ``PATH`` and other variables like ``ANDROID_HOME`` or ``ANDROID_SDK_ROOT`` to find the SDK. If you don't have those environment variables set, you can browse to the SDK and JDK folders in the :doc:`settings window <../window/settings_window>` under the :guilabel:`Android` section.
|
||||
|
||||
If something goes wrong with these steps, please `open an issue on GitHub <https://github.com/baldurk/renderdoc/issues/new/choose>`__! The process should be as smooth as possible given Android's platform limitations, so if you encounter problems then it may well be fixable.
|
||||
|
||||
Often when an operation fails, more information is available via :guilabel:`Help` → :guilabel:`View Diagnostic Log`.
|
||||
|
||||
@@ -99,17 +99,17 @@ Capture files will all be kept on the target system by default. They will only b
|
||||
|
||||
.. note::
|
||||
|
||||
There is a case where temporary captures can be 'leaked' and not cleaned up. If you do not have a remote server run command configured and have captures left over when the program closes, there will be no way to either save or delete the temporary log files. This *doesn't* apply to deleting or saving captures while the program is still running.
|
||||
There is a case where temporary captures can be 'leaked' and not cleaned up. If you do not have a remote server run command configured and have captures left over when the program closes, there will be no way to either save or delete the temporary capture files. This *doesn't* apply to deleting or saving captures while the program is still running.
|
||||
|
||||
The capture connection will warn you about this case and let you know when you are leaking temporary captures - you can delete them by hand if necessary, or you can switch to a replay context on that host and then you will be able to save and delete them as normal.
|
||||
|
||||
Note that this is the same as if a program is run locally without any connection to the UI made at all - the captures will leak with nothing left to take ownership of them. The difference is that if a connection is made, because the files are on the local machine they can be deleted or saved directly by the UI even after the program has closed.
|
||||
|
||||
Capture files made with a recent version of RenderDoc will store a coarse type of machine that was used at capture time, such as 'Linux 64-bit' or 'Windows 32-bit'. If you have the local replay context active and the machine you are running on differs significantly from the machine that the capture was made on, the UI will prompt you to ask if you really want to replay it locally (which may or may not work depending on the API and contents of the log), or switch to a remote context.
|
||||
Capture files made with a recent version of RenderDoc will store a coarse type of machine that was used at capture time, such as 'Linux 64-bit' or 'Windows 32-bit'. If you have the local replay context active and the machine you are running on differs significantly from the machine that the capture was made on, the UI will prompt you to ask if you really want to replay it locally (which may or may not work depending on the API and contents of the capture), or switch to a remote context.
|
||||
|
||||
.. figure:: ../imgs/Screenshots/RemoteHostCapturePrompt.png
|
||||
|
||||
Remote Hosts: Prompting for remote replay of a notably different log
|
||||
Remote Hosts: Prompting for remote replay of a notably different capture
|
||||
|
||||
Configuring the Remote Server
|
||||
-----------------------------
|
||||
|
||||
@@ -253,21 +253,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return (cap, controller)
|
||||
|
||||
|
||||
@@ -12,21 +12,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return cap,controller
|
||||
|
||||
|
||||
@@ -69,21 +69,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return cap,controller
|
||||
|
||||
|
||||
@@ -60,21 +60,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return (cap, controller)
|
||||
|
||||
|
||||
@@ -63,21 +63,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return cap,controller
|
||||
|
||||
|
||||
@@ -58,23 +58,23 @@ else:
|
||||
URL = hostname
|
||||
|
||||
# Let's try to connect
|
||||
status,remote = rd.CreateRemoteServerConnection(URL)
|
||||
result,remote = rd.CreateRemoteServerConnection(URL)
|
||||
|
||||
if status == rd.ReplayStatus.NetworkIOFailed and protocol is not None:
|
||||
if result == rd.ResultCode.NetworkIOFailed and protocol is not None:
|
||||
# If there's just no I/O, most likely the server is not running. If we have
|
||||
# a protocol, we can try to start the remote server
|
||||
print("Couldn't connect to remote server, trying to start it")
|
||||
|
||||
status = protocol.StartRemoteServer(URL)
|
||||
result = protocol.StartRemoteServer(URL)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError(f"Couldn't launch remote server, got error {str(status)}")
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError(f"Couldn't launch remote server, got error {str(result)}")
|
||||
|
||||
# Try to connect again!
|
||||
status,remote = rd.CreateRemoteServerConnection(URL)
|
||||
result,remote = rd.CreateRemoteServerConnection(URL)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError(f"Couldn't connect to remote server, got error {str(status)}")
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError(f"Couldn't connect to remote server, got error {str(result)}")
|
||||
|
||||
# We now have a remote connection. This works regardless of whether it's a device
|
||||
# with a protocol or not. In fact we are done with the protocol at this point
|
||||
@@ -101,9 +101,9 @@ print(f"Running {exe}")
|
||||
|
||||
result = remote.ExecuteAndInject(exe, workingDir, cmdLine, env, opts)
|
||||
|
||||
if result.status != rd.ReplayStatus.Succeeded:
|
||||
if result.result != rd.ResultCode.Succeeded:
|
||||
remote.ShutdownServerAndConnection()
|
||||
raise RuntimeError(f"Couldn't launch {exe}, got error {str(result.status)}")
|
||||
raise RuntimeError(f"Couldn't launch {exe}, got error {str(result.result)}")
|
||||
|
||||
# Spin up a thread to keep the remote server connection alive while we make a capture,
|
||||
# as it will time out after 5 seconds of inactivity
|
||||
@@ -171,11 +171,11 @@ print(f"Got new capture at {cap_path} which is frame {msg.newCapture.frameNumber
|
||||
#
|
||||
# The path must be remote - if the capture isn't freshly created then you need
|
||||
# to copy it with remote.CopyCaptureToRemote()
|
||||
status,controller = remote.OpenCapture(rd.RemoteServer.NoPreference, cap_path, rd.ReplayOptions(), None)
|
||||
result,controller = remote.OpenCapture(rd.RemoteServer.NoPreference, cap_path, rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
remote.ShutdownServerAndConnection()
|
||||
raise RuntimeError(f"Couldn't open {cap_path}, got error {str(result.status)}")
|
||||
raise RuntimeError(f"Couldn't open {cap_path}, got error {str(result)}")
|
||||
|
||||
# We can now use replay as normal.
|
||||
#
|
||||
|
||||
@@ -43,18 +43,18 @@ If the connection fails, normally we must fail but if we have a device protocol
|
||||
.. highlight:: python
|
||||
.. code:: python
|
||||
|
||||
if status == rd.ReplayStatus.NetworkIOFailed and protocol is not None:
|
||||
if result == rd.ResultCode.NetworkIOFailed and protocol is not None:
|
||||
# If there's just no I/O, most likely the server is not running. If we have
|
||||
# a protocol, we can try to start the remote server
|
||||
print("Couldn't connect to remote server, trying to start it")
|
||||
|
||||
status = protocol.StartRemoteServer(URL)
|
||||
result = protocol.StartRemoteServer(URL)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError(f"Couldn't launch remote server, got error {str(status)}")
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError(f"Couldn't launch remote server, got error {str(result)}")
|
||||
|
||||
# Try to connect again!
|
||||
status,remote = rd.CreateRemoteServerConnection(URL)
|
||||
result,remote = rd.CreateRemoteServerConnection(URL)
|
||||
|
||||
.. note::
|
||||
|
||||
|
||||
@@ -78,21 +78,21 @@ def loadCapture(filename):
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile(filename, '', None)
|
||||
result = cap.OpenFile(filename, '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
return (cap, controller)
|
||||
|
||||
|
||||
@@ -6,21 +6,21 @@ rd.InitialiseReplay(rd.GlobalEnvironment(), [])
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile('test.rdc', '', None)
|
||||
result = cap.OpenFile('test.rdc', '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
raise RuntimeError("Capture cannot be replayed")
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
# Now we can use the controller!
|
||||
print("%d top-level actions" % len(controller.GetRootActions()))
|
||||
|
||||
@@ -63,7 +63,7 @@ Before doing anything, we must initialise the replay API. We do that by calling
|
||||
|
||||
To begin with, we use :py:meth:`~renderdoc.OpenCaptureFile` to obtain a :py:class:`~renderdoc.CaptureFile` instance. This gives us access to control over a capture file at a meta level. For more information see the :py:class:`CaptureFile` reference - the interface can also be used to create.
|
||||
|
||||
To open a file, use :py:meth:`~renderdoc.CaptureFile.OpenFile` on the :py:class:`~renderdoc.CaptureFile` instance. This function allows conversion from other formats via an importer, but here we'll use it just for opening a regular ``rdc`` file. It returns a :py:class:`~renderdoc.ReplayStatus` which can be used to determine what went wrong in the event that there was a problem. We then check that the capture uses an API which can be replayed locally - for example not every platform supports ``D3D11``, so on linux this would return no local replay support.
|
||||
To open a file, use :py:meth:`~renderdoc.CaptureFile.OpenFile` on the :py:class:`~renderdoc.CaptureFile` instance. This function allows conversion from other formats via an importer, but here we'll use it just for opening a regular ``rdc`` file. It returns a :py:class:`~renderdoc.ResultDetails` which can be used to determine what went wrong in the event that there was a problem. We then check that the capture uses an API which can be replayed locally - for example not every platform supports ``D3D11``, so on linux this would return no local replay support.
|
||||
|
||||
.. highlight:: python
|
||||
.. code:: python
|
||||
@@ -72,11 +72,11 @@ To open a file, use :py:meth:`~renderdoc.CaptureFile.OpenFile` on the :py:class:
|
||||
cap = rd.OpenCaptureFile()
|
||||
|
||||
# Open a particular file - see also OpenBuffer to load from memory
|
||||
status = cap.OpenFile('test.rdc', '', None)
|
||||
result = cap.OpenFile('test.rdc', '', None)
|
||||
|
||||
# Make sure the file opened successfully
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't open file: " + str(result))
|
||||
|
||||
# Make sure we can replay
|
||||
if not cap.LocalReplaySupport():
|
||||
@@ -85,7 +85,7 @@ To open a file, use :py:meth:`~renderdoc.CaptureFile.OpenFile` on the :py:class:
|
||||
Accessing Capture Analysis
|
||||
--------------------------
|
||||
|
||||
Once the capture has been loaded, we can now begin the replay analysis. To do that we use :py:meth:`~renderdoc.CaptureFile.OpenCapture` which returns a tuple of :py:class:`~renderdoc.ReplayStatus` and :py:class:`~renderdoc.ReplayController`.
|
||||
Once the capture has been loaded, we can now begin the replay analysis. To do that we use :py:meth:`~renderdoc.CaptureFile.OpenCapture` which returns a tuple of :py:class:`~renderdoc.ResultDetails` and :py:class:`~renderdoc.ReplayController`.
|
||||
|
||||
This function call will open the capture and begin to replay it, and initialise the analysis. The :py:class:`~renderdoc.ReplayController` returned is the interface to the majority of RenderDoc's replaying functionality.
|
||||
|
||||
@@ -93,10 +93,10 @@ This function call will open the capture and begin to replay it, and initialise
|
||||
.. code:: python
|
||||
|
||||
# Initialise the replay
|
||||
status,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
result,controller = cap.OpenCapture(rd.ReplayOptions(), None)
|
||||
|
||||
if status != rd.ReplayStatus.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(status))
|
||||
if result != rd.ResultCode.Succeeded:
|
||||
raise RuntimeError("Couldn't initialise replay: " + str(result))
|
||||
|
||||
# Now we can use the controller!
|
||||
print("%d top-level actions" % len(controller.GetRootActions()))
|
||||
|
||||
@@ -14,6 +14,12 @@ Initialisation and Shutdown
|
||||
.. autoclass:: renderdoc.GlobalEnvironment
|
||||
:members:
|
||||
|
||||
.. autoclass:: renderdoc.ResultCode
|
||||
:members:
|
||||
|
||||
.. autoclass:: renderdoc.ResultDetails
|
||||
:members:
|
||||
|
||||
Capture File Access
|
||||
-------------------
|
||||
|
||||
@@ -25,9 +31,6 @@ Capture File Access
|
||||
.. autoclass:: renderdoc.CaptureFile
|
||||
:members:
|
||||
|
||||
.. autoclass:: renderdoc.ReplayStatus
|
||||
:members:
|
||||
|
||||
.. autoclass:: renderdoc.ReplaySupport
|
||||
:members:
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ API Calls
|
||||
|
||||
This section lists the series of API calls made between the preceding action and the currently selected action. The current action is always the last element in this list and is highlighted in bold. By default it is also the selected element.
|
||||
|
||||
Each API call can be expanded to see the parameters that were passed to it, in the form that they were serialised out to the log file.
|
||||
Each API call can be expanded to see the parameters that were passed to it, in the form that they were serialised out to the capture.
|
||||
|
||||
.. figure:: ../imgs/Screenshots/APIList.png
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ In this example we have a connection window open to the debugmarker sample from
|
||||
|
||||
From here you can save these captures out - as currently they are only temporary copies that will be cleaned up on close. You can also manually delete any capture you wish to discard.
|
||||
|
||||
Double clicking on any capture will close any current open capture in the RenderDoc UI, and open up that capture for inspection. You may also right click or use the drop-down menu on the open button to launch a new instance of RenderDoc for viewing the log. This is mostly useful if you want to compare two captures side-by-side easily.
|
||||
Double clicking on any capture will close any current open capture in the RenderDoc UI, and open up that capture for inspection. You may also right click or use the drop-down menu on the open button to launch a new instance of RenderDoc for viewing the capture. This is mostly useful if you want to compare two captures side-by-side easily.
|
||||
|
||||
You can press F2 or single click on a selected capture (not double click) to rename the default label given to each capture. This can be useful if you're changing something as you go or toggling an option and you want to remember which capture is which.
|
||||
|
||||
|
||||
@@ -3,12 +3,12 @@ Debug Messages
|
||||
|
||||
The Debug Messages window shows messages from the API including warnings about performance issues or concerns about potential hazards, as well as errors on invalid use of the API.
|
||||
|
||||
RenderDoc will alert you if there are any debug messages to show from the log by flashing in the status bar. Sometimes RenderDoc will also add new alerts there that aren't part of the original log if there are warnings or problems that it encounters while processing and analysing the log.
|
||||
RenderDoc will alert you if there are any debug messages to show from the capture by flashing in the status bar. Sometimes RenderDoc will also add new alerts there that aren't part of the original capture if there are warnings or problems that it encounters while processing and analysing the capture.
|
||||
|
||||
Capturing with debug messages included
|
||||
--------------------------------------
|
||||
|
||||
To include these debug messages in a log, check on the :guilabel:`Enable API validation` option in the capture options. For more information see :doc:`capture_attach`
|
||||
To include these debug messages in a capture, check on the :guilabel:`Enable API validation` option in the capture options. For more information see :doc:`capture_attach`
|
||||
|
||||
Debug Messages
|
||||
--------------
|
||||
|
||||
Reference in New Issue
Block a user