bpo-35134: Split traceback.h header (GH-13430) · python/cpython@ed48866 (original) (raw)
1
``
-
2
1
`#ifndef Py_TRACEBACK_H
`
3
2
`#define Py_TRACEBACK_H
`
4
3
`#ifdef __cplusplus
`
5
4
`extern "C" {
`
6
5
`#endif
`
7
6
``
8
``
`-
#include "pystate.h"
`
9
``
-
10
7
`struct _frame;
`
11
8
``
12
9
`/* Traceback interface */
`
13
``
`-
#ifndef Py_LIMITED_API
`
14
``
`-
typedef struct _traceback {
`
15
``
`-
PyObject_HEAD
`
16
``
`-
struct _traceback *tb_next;
`
17
``
`-
struct _frame *tb_frame;
`
18
``
`-
int tb_lasti;
`
19
``
`-
int tb_lineno;
`
20
``
`-
} PyTracebackObject;
`
21
``
`-
#endif
`
22
10
``
23
11
`PyAPI_FUNC(int) PyTraceBack_Here(struct _frame *);
`
24
12
`PyAPI_FUNC(int) PyTraceBack_Print(PyObject *, PyObject *);
`
25
``
`-
#ifndef Py_LIMITED_API
`
26
``
`-
PyAPI_FUNC(int) _Py_DisplaySourceLine(PyObject *, PyObject *, int, int);
`
27
``
`-
PyAPI_FUNC(void) _PyTraceback_Add(const char *, const char *, int);
`
28
``
`-
#endif
`
29
13
``
30
14
`/* Reveal traceback type so we can typecheck traceback objects */
`
31
15
`PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
`
32
16
`#define PyTraceBack_Check(v) (Py_TYPE(v) == &PyTraceBack_Type)
`
33
17
``
34
``
`-
#ifndef Py_LIMITED_API
`
35
``
`-
/* Write the Python traceback into the file 'fd'. For example:
`
36
``
-
37
``
`-
Traceback (most recent call first):
`
38
``
`-
File "xxx", line xxx in
`
39
``
`-
File "xxx", line xxx in
`
40
``
`-
...
`
41
``
`-
File "xxx", line xxx in
`
42
``
-
43
``
`-
This function is written for debug purpose only, to dump the traceback in
`
44
``
`-
the worst case: after a segmentation fault, at fatal error, etc. That's why,
`
45
``
`-
it is very limited. Strings are truncated to 100 characters and encoded to
`
46
``
`-
ASCII with backslashreplace. It doesn't write the source code, only the
`
47
``
`-
function name, filename and line number of each frame. Write only the first
`
48
``
`-
100 frames: if the traceback is truncated, write the line " ...".
`
49
``
-
50
``
`-
This function is signal safe. */
`
51
``
-
52
``
`-
PyAPI_FUNC(void) _Py_DumpTraceback(
`
53
``
`-
int fd,
`
54
``
`-
PyThreadState *tstate);
`
55
``
-
56
``
`-
/* Write the traceback of all threads into the file 'fd'. current_thread can be
`
57
``
`-
NULL.
`
58
``
-
59
``
`-
Return NULL on success, or an error message on error.
`
60
``
-
61
``
`-
This function is written for debug purpose only. It calls
`
62
``
`-
_Py_DumpTraceback() for each thread, and so has the same limitations. It
`
63
``
`-
only write the traceback of the first 100 threads: write "..." if there are
`
64
``
`-
more threads.
`
65
``
-
66
``
`-
If current_tstate is NULL, the function tries to get the Python thread state
`
67
``
`-
of the current thread. It is not an error if the function is unable to get
`
68
``
`-
the current Python thread state.
`
69
``
-
70
``
`-
If interp is NULL, the function tries to get the interpreter state from
`
71
``
`-
the current Python thread state, or from
`
72
``
`-
_PyGILState_GetInterpreterStateUnsafe() in last resort.
`
73
``
-
74
``
`-
It is better to pass NULL to interp and current_tstate, the function tries
`
75
``
`-
different options to retrieve these informations.
`
76
``
-
77
``
`-
This function is signal safe. */
`
78
``
-
79
``
`-
PyAPI_FUNC(const char*) _Py_DumpTracebackThreads(
`
80
``
`-
int fd,
`
81
``
`-
PyInterpreterState *interp,
`
82
``
`-
PyThreadState *current_tstate);
`
83
``
`-
#endif /* !Py_LIMITED_API */
`
84
18
``
85
19
`#ifndef Py_LIMITED_API
`
86
``
-
87
``
`-
/* Write a Unicode object into the file descriptor fd. Encode the string to
`
88
``
`-
ASCII using the backslashreplace error handler.
`
89
``
-
90
``
`-
Do nothing if text is not a Unicode object. The function accepts Unicode
`
91
``
`-
string which is not ready (PyUnicode_WCHAR_KIND).
`
92
``
-
93
``
`-
This function is signal safe. */
`
94
``
`-
PyAPI_FUNC(void) _Py_DumpASCII(int fd, PyObject *text);
`
95
``
-
96
``
`-
/* Format an integer as decimal into the file descriptor fd.
`
97
``
-
98
``
`-
This function is signal safe. */
`
99
``
`-
PyAPI_FUNC(void) _Py_DumpDecimal(
`
100
``
`-
int fd,
`
101
``
`-
unsigned long value);
`
102
``
-
103
``
`-
/* Format an integer as hexadecimal into the file descriptor fd with at least
`
104
``
`-
width digits.
`
105
``
-
106
``
`-
The maximum width is sizeof(unsigned long)*2 digits.
`
107
``
-
108
``
`-
This function is signal safe. */
`
109
``
`-
PyAPI_FUNC(void) _Py_DumpHexadecimal(
`
110
``
`-
int fd,
`
111
``
`-
unsigned long value,
`
112
``
`-
Py_ssize_t width);
`
113
``
-
114
``
`-
#endif /* !Py_LIMITED_API */
`
``
20
`+
define Py_CPYTHON_TRACEBACK_H
`
``
21
`+
include "cpython/traceback.h"
`
``
22
`+
undef Py_CPYTHON_TRACEBACK_H
`
``
23
`+
#endif
`
115
24
``
116
25
`#ifdef __cplusplus
`
117
26
`}
`