blob: 1d341f444cb3c62ba89be316f0bb85afeb917857 [file] [log] [blame]
.. Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
.. For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
.. This file is processed with cog to insert the latest command help into the
docs. If it's out of date, the quality checks will fail. Running "make
prebuild" will bring it up to date.
.. [[[cog
from cog_helpers import show_help
.. ]]]
.. [[[end]]] (sum: 1B2M2Y8Asg)
.. _cmd_debug:
Diagnostics: ``coverage debug``
-------------------------------
The **debug** command shows internal information to help diagnose problems.
If you are reporting a bug about coverage.py, including the output of this
command can often help::
$ coverage debug sys > please_attach_to_bug_report.txt
A few types of information are available:
* ``config``: show coverage's configuration
* ``sys``: show system configuration
* ``data``: show a summary of the collected coverage data
* ``premain``: show the call stack invoking coverage
* ``pybehave``: show internal flags describing Python behavior
* ``sqlite``: show internal compilation options for SQLite
.. [[[cog show_help("debug") ]]]
.. code::
$ coverage debug --help
Usage: coverage debug <topic>
Display information about the internals of coverage.py, for diagnosing
problems. Topics are: 'data' to show a summary of the collected data; 'sys' to
show installation information; 'config' to show the configuration; 'premain'
to show what is calling coverage; 'pybehave' to show internal flags describing
Python behavior; 'sqlite' to show SQLite compilation options.
Options:
--debug=OPTS Debug options, separated by commas. [env: COVERAGE_DEBUG]
-h, --help Get help on this command.
--rcfile=RCFILE Specify configuration file. By default '.coveragerc',
'setup.cfg', 'tox.ini', and 'pyproject.toml' are tried.
[env: COVERAGE_RCFILE]
.. [[[end]]] (sum: noWWXgVKcd)
.. _cmd_run_debug:
``--debug`` option
..................
The ``--debug`` option is available on all commands. It instructs
coverage.py to log internal details of its operation to help with diagnosing
problems. It takes a comma-separated list of options, each indicating a facet
of activity to log:
* ``callers``: annotate each debug message with a stack trace of the callers
to that point.
* ``config``: before starting, dump all the :ref:`configuration <config>`
values.
* ``dataio``: log when reading or writing any data file.
* ``dataop``: log a summary of data being added to CoverageData objects.
* ``dataop2``: when used with ``debug=dataop``, log the actual data being added
to CoverageData objects.
* ``lock``: log operations acquiring locks in the data layer.
* ``multiproc``: log the start and stop of multiprocessing processes.
* ``patch``: log when patches are applied and when they are executed. See
:ref:`config_run_patch`.
* ``pathmap``: log the remapping of paths that happens during ``coverage
combine``. See :ref:`config_paths`.
* ``pid``: annotate all warnings and debug output with the process and thread
ids.
* ``plugin``: print information about plugin operations.
* ``process``: show process creation information, and changes in the current
directory. This also writes a time stamp and command arguments into the data
file.
* ``pybehave``: show the values of `internal flags <env.py_>`_ describing the
behavior of the current version of Python.
* ``pytest``: indicate the name of the current pytest test when it changes.
* ``self``: annotate each debug message with the object printing the message.
* ``sql``: log the SQL statements used for recording data.
* ``sqldata``: when used with ``debug=sql``, also log the full data being used
in SQL statements.
* ``sys``: before starting, dump all the system and environment information,
as with :ref:`coverage debug sys <cmd_debug>`.
* ``trace``: print every decision about whether to trace a file or not. For
files not being traced, the reason is also given.
.. _env.py: https://github.com/nedbat/coveragepy/blob/master/coverage/env.py
Debug options can also be set with the ``COVERAGE_DEBUG`` environment variable,
a comma-separated list of these options, or in the :ref:`config_run_debug`
section of the .coveragerc file.
The debug output goes to stderr, unless the :ref:`config_run_debug_file`
setting or the ``COVERAGE_DEBUG_FILE`` environment variable names a different
file, which will be appended to. This can be useful because many test runners
capture output, which could hide important details. ``COVERAGE_DEBUG_FILE``
accepts the special names ``stdout`` and ``stderr`` to write to those
destinations.