@@ -1277,8 +1277,8 @@ Python-level trace functions in previous versions.
1277
1277
registration function as *obj *, *frame * is the frame object to which the event
1278
1278
pertains, *what * is one of the constants :const: `PyTrace_CALL `,
1279
1279
:const: `PyTrace_EXCEPTION `, :const: `PyTrace_LINE `, :const: `PyTrace_RETURN `,
1280
- :const: `PyTrace_C_CALL `, :const: `PyTrace_C_EXCEPTION `, or
1281
- :const: `PyTrace_C_RETURN `, and *arg * depends on the value of *what *:
1280
+ :const: `PyTrace_C_CALL `, :const: `PyTrace_C_EXCEPTION `, :const: ` PyTrace_C_RETURN `,
1281
+ or :const: `PyTrace_OPCODE `, and *arg * depends on the value of *what *:
1282
1282
1283
1283
+------------------------------+--------------------------------------+
1284
1284
| Value of *what * | Meaning of *arg * |
@@ -1299,6 +1299,8 @@ Python-level trace functions in previous versions.
1299
1299
+------------------------------+--------------------------------------+
1300
1300
| :const: `PyTrace_C_RETURN ` | Function object being called. |
1301
1301
+------------------------------+--------------------------------------+
1302
+ | :const: `PyTrace_OPCODE ` | Always :c:data: `Py_None `. |
1303
+ +------------------------------+--------------------------------------+
1302
1304
1303
1305
.. c :var :: int PyTrace_CALL
1304
1306
@@ -1322,8 +1324,9 @@ Python-level trace functions in previous versions.
1322
1324
1323
1325
.. c :var :: int PyTrace_LINE
1324
1326
1325
- The value passed as the *what * parameter to a trace function (but not a
1326
- profiling function) when a line-number event is being reported.
1327
+ The value passed as the *what * parameter to a :c:type: `Py_tracefunc ` function
1328
+ (but not a profiling function) when a line-number event is being reported.
1329
+ It may be disabled for a frame by setting :attr:`f_trace_lines` to *0* on that frame.
1327
1330
1328
1331
1329
1332
.. c:var:: int PyTrace_RETURN
@@ -1350,24 +1353,32 @@ Python-level trace functions in previous versions.
1350
1353
function has returned.
1351
1354
1352
1355
1356
+ .. c:var:: int PyTrace_OPCODE
1357
+
1358
+ The value for the *what* parameter to :c:type:`Py_tracefunc` functions (but not
1359
+ profiling functions) when a new opcode is about to be executed. This event is
1360
+ not emitted by default: it must be explicitly requested by setting
1361
+ :attr:`f_trace_opcodes` to *1* on the frame.
1362
+
1363
+
1353
1364
.. c:function:: void PyEval_SetProfile(Py_tracefunc func, PyObject *obj)
1354
1365
1355
1366
Set the profiler function to *func *. The *obj * parameter is passed to the
1356
1367
function as its first parameter, and may be any Python object, or *NULL *. If
1357
1368
the profile function needs to maintain state, using a different value for *obj *
1358
1369
for each thread provides a convenient and thread-safe place to store it. The
1359
1370
profile function is called for all monitored events except :const: `PyTrace_LINE `
1360
- and :const: `PyTrace_EXCEPTION `.
1371
+ :const: ` PyTrace_OPCODE ` and :const: `PyTrace_EXCEPTION `.
1361
1372
1362
1373
1363
1374
.. c :function :: void PyEval_SetTrace (Py_tracefunc func, PyObject *obj)
1364
1375
1365
1376
Set the tracing function to *func *. This is similar to
1366
1377
:c:func: `PyEval_SetProfile `, except the tracing function does receive line-number
1367
- events and does not receive any event related to C function objects being called. Any
1368
- trace function registered using :c:func: `PyEval_SetTrace ` will not receive
1369
- :const: `PyTrace_C_CALL `, :const: `PyTrace_C_EXCEPTION ` or :const: ` PyTrace_C_RETURN `
1370
- as a value for the *what * parameter.
1378
+ events and per-opcode events, but does not receive any event related to C function
1379
+ objects being called. Any trace function registered using :c:func: `PyEval_SetTrace `
1380
+ will not receive :const: `PyTrace_C_CALL `, :const: `PyTrace_C_EXCEPTION ` or
1381
+ :const: ` PyTrace_C_RETURN ` as a value for the *what * parameter.
1371
1382
1372
1383
.. _advanced-debugging :
1373
1384
0 commit comments