|
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 <xxx> |
39 | | - File "xxx", line xxx in <xxx> |
40 | | - ... |
41 | | - File "xxx", line xxx in <xxx> |
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 | } |
|
0 commit comments