# SOME DESCRIPTIVE TITLE. # Copyright (C) 2001-2016, Python Software Foundation # This file is distributed under the same license as the Python package. # FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: Python 3.6\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2016-10-30 10:40+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: ../Doc/howto/instrumentation.rst:5 msgid "Instrumenting CPython with DTrace and SystemTap" msgstr "" #: ../Doc/howto/instrumentation.rst:7 msgid "David Malcolm" msgstr "" #: ../Doc/howto/instrumentation.rst:8 msgid "Ɓukasz Langa" msgstr "" #: ../Doc/howto/instrumentation.rst:10 msgid "" "DTrace and SystemTap are monitoring tools, each providing a way to inspect " "what the processes on a computer system are doing. They both use domain-" "specific languages allowing a user to write scripts which:" msgstr "" #: ../Doc/howto/instrumentation.rst:14 msgid "filter which processes are to be observed" msgstr "" #: ../Doc/howto/instrumentation.rst:15 msgid "gather data from the processes of interest" msgstr "" #: ../Doc/howto/instrumentation.rst:16 msgid "generate reports on the data" msgstr "" #: ../Doc/howto/instrumentation.rst:18 msgid "" "As of Python 3.6, CPython can be built with embedded \"markers\", also known " "as \"probes\", that can be observed by a DTrace or SystemTap script, making " "it easier to monitor what the CPython processes on a system are doing." msgstr "" #: ../Doc/howto/instrumentation.rst:28 msgid "" "DTrace markers are implementation details of the CPython interpreter. No " "guarantees are made about probe compatibility between versions of CPython. " "DTrace scripts can stop working or work incorrectly without warning when " "changing CPython versions." msgstr "" #: ../Doc/howto/instrumentation.rst:35 msgid "Enabling the static markers" msgstr "" #: ../Doc/howto/instrumentation.rst:37 msgid "" "macOS comes with built-in support for DTrace. On Linux, in order to build " "CPython with the embedded markers for SystemTap, the SystemTap development " "tools must be installed." msgstr "" #: ../Doc/howto/instrumentation.rst:41 msgid "On a Linux machine, this can be done via::" msgstr "" #: ../Doc/howto/instrumentation.rst:45 msgid "or::" msgstr "ou : ::" #: ../Doc/howto/instrumentation.rst:50 msgid "CPython must then be configured `--with-dtrace`::" msgstr "" #: ../Doc/howto/instrumentation.rst:54 msgid "" "On macOS, you can list available DTrace probes by running a Python process " "in the background and listing all probes made available by the Python " "provider::" msgstr "" #: ../Doc/howto/instrumentation.rst:71 msgid "" "On Linux, you can verify if the SystemTap static markers are present in the " "built binary by seeing if it contains a \".note.stapsdt\" section." msgstr "" #: ../Doc/howto/instrumentation.rst:79 msgid "" "If you've built Python as a shared library (with --enable-shared), you need " "to look instead within the shared library. For example:" msgstr "" #: ../Doc/howto/instrumentation.rst:87 msgid "Sufficiently modern readelf can print the metadata:" msgstr "" #: ../Doc/howto/instrumentation.rst:126 msgid "" "The above metadata contains information for SystemTap describing how it can " "patch strategically-placed machine code instructions to enable the tracing " "hooks used by a SystemTap script." msgstr "" #: ../Doc/howto/instrumentation.rst:132 msgid "Static DTrace probes" msgstr "" #: ../Doc/howto/instrumentation.rst:134 msgid "" "The following example DTrace script can be used to show the call/return " "hierarchy of a Python script, only tracing within the invocation of a " "function called \"start\". In other words, import-time function invocations " "are not going to be listed:" msgstr "" #: ../Doc/howto/instrumentation.rst:173 ../Doc/howto/instrumentation.rst:231 msgid "It can be invoked like this:" msgstr "" #: ../Doc/howto/instrumentation.rst:179 ../Doc/howto/instrumentation.rst:239 msgid "The output looks like this::" msgstr "" #: ../Doc/howto/instrumentation.rst:202 msgid "Static SystemTap markers" msgstr "" #: ../Doc/howto/instrumentation.rst:204 msgid "" "The low-level way to use the SystemTap integration is to use the static " "markers directly. This requires you to explicitly state the binary file " "containing them." msgstr "" #: ../Doc/howto/instrumentation.rst:208 msgid "" "For example, this SystemTap script can be used to show the call/return " "hierarchy of a Python script:" msgstr "" #: ../Doc/howto/instrumentation.rst:248 msgid "where the columns are:" msgstr "" #: ../Doc/howto/instrumentation.rst:250 msgid "time in microseconds since start of script" msgstr "" #: ../Doc/howto/instrumentation.rst:252 msgid "name of executable" msgstr "" #: ../Doc/howto/instrumentation.rst:254 msgid "PID of process" msgstr "" #: ../Doc/howto/instrumentation.rst:256 msgid "" "and the remainder indicates the call/return hierarchy as the script executes." msgstr "" #: ../Doc/howto/instrumentation.rst:258 msgid "" "For a `--enable-shared` build of CPython, the markers are contained within " "the libpython shared library, and the probe's dotted path needs to reflect " "this. For example, this line from the above example::" msgstr "" #: ../Doc/howto/instrumentation.rst:264 msgid "should instead read::" msgstr "" #: ../Doc/howto/instrumentation.rst:268 msgid "(assuming a debug build of CPython 3.6)" msgstr "" #: ../Doc/howto/instrumentation.rst:272 msgid "Available static markers" msgstr "" #: ../Doc/howto/instrumentation.rst:278 msgid "" "This marker indicates that execution of a Python function has begun. It is " "only triggered for pure-Python (bytecode) functions." msgstr "" #: ../Doc/howto/instrumentation.rst:281 msgid "" "The filename, function name, and line number are provided back to the " "tracing script as positional arguments, which must be accessed using ``" "$arg1``, ``$arg2``, ``$arg3``:" msgstr "" #: ../Doc/howto/instrumentation.rst:285 msgid "" "``$arg1`` : ``(const char *)`` filename, accessible using " "``user_string($arg1)``" msgstr "" #: ../Doc/howto/instrumentation.rst:287 msgid "" "``$arg2`` : ``(const char *)`` function name, accessible using " "``user_string($arg2)``" msgstr "" #: ../Doc/howto/instrumentation.rst:290 msgid "``$arg3`` : ``int`` line number" msgstr "" #: ../Doc/howto/instrumentation.rst:294 msgid "" "This marker is the converse of :c:func:`function__entry`, and indicates that " "execution of a Python function has ended (either via ``return``, or via an " "exception). It is only triggered for pure-Python (bytecode) functions." msgstr "" #: ../Doc/howto/instrumentation.rst:298 msgid "The arguments are the same as for :c:func:`function__entry`" msgstr "" #: ../Doc/howto/instrumentation.rst:302 msgid "" "This marker indicates a Python line is about to be executed. It is the " "equivalent of line-by-line tracing with a Python profiler. It is not " "triggered within C functions." msgstr "" #: ../Doc/howto/instrumentation.rst:306 msgid "The arguments are the same as for :c:func:`function__entry`." msgstr "" #: ../Doc/howto/instrumentation.rst:310 msgid "" "Fires when the Python interpreter starts a garbage collection cycle. " "``arg0`` is the generation to scan, like :func:`gc.collect()`." msgstr "" #: ../Doc/howto/instrumentation.rst:315 msgid "" "Fires when the Python interpreter finishes a garbage collection cycle. " "``arg0`` is the number of collected objects." msgstr "" #: ../Doc/howto/instrumentation.rst:320 msgid "SystemTap Tapsets" msgstr "" #: ../Doc/howto/instrumentation.rst:322 msgid "" "The higher-level way to use the SystemTap integration is to use a \"tapset" "\": SystemTap's equivalent of a library, which hides some of the lower-level " "details of the static markers." msgstr "" #: ../Doc/howto/instrumentation.rst:326 msgid "Here is a tapset file, based on a non-shared build of CPython:" msgstr "" #: ../Doc/howto/instrumentation.rst:349 msgid "" "If this file is installed in SystemTap's tapset directory (e.g. ``/usr/share/" "systemtap/tapset``), then these additional probepoints become available:" msgstr "" #: ../Doc/howto/instrumentation.rst:355 msgid "" "This probe point indicates that execution of a Python function has begun. It " "is only triggered for pure-python (bytecode) functions." msgstr "" #: ../Doc/howto/instrumentation.rst:360 msgid "" "This probe point is the converse of :c:func:`python.function.return`, and " "indicates that execution of a Python function has ended (either via " "``return``, or via an exception). It is only triggered for pure-python " "(bytecode) functions." msgstr "" #: ../Doc/howto/instrumentation.rst:367 msgid "Examples" msgstr "Exemples" #: ../Doc/howto/instrumentation.rst:368 msgid "" "This SystemTap script uses the tapset above to more cleanly implement the " "example given above of tracing the Python function-call hierarchy, without " "needing to directly name the static markers:" msgstr "" #: ../Doc/howto/instrumentation.rst:387 msgid "" "The following script uses the tapset above to provide a top-like view of all " "running CPython code, showing the top 20 most frequently-entered bytecode " "frames, each second, across the whole system:" msgstr ""