mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
gh-106597: Add debugging struct with offsets for out-of-process tools (#106598)
This commit is contained in:
parent
579aa89e68
commit
b444bfb0a3
3 changed files with 151 additions and 1 deletions
|
@ -21,9 +21,65 @@ extern PyTypeObject _PyExc_MemoryError;
|
|||
/* The static initializers defined here should only be used
|
||||
in the runtime init code (in pystate.c and pylifecycle.c). */
|
||||
|
||||
|
||||
#define _PyRuntimeState_INIT(runtime) \
|
||||
{ \
|
||||
.debug_offsets = { \
|
||||
.cookie = "xdebugpy", \
|
||||
.version = PY_VERSION_HEX, \
|
||||
.runtime_state = { \
|
||||
.finalizing = offsetof(_PyRuntimeState, _finalizing), \
|
||||
.interpreters_head = offsetof(_PyRuntimeState, interpreters.head), \
|
||||
}, \
|
||||
.interpreter_state = { \
|
||||
.next = offsetof(PyInterpreterState, next), \
|
||||
.threads_head = offsetof(PyInterpreterState, threads.head), \
|
||||
.gc = offsetof(PyInterpreterState, gc), \
|
||||
.imports_modules = offsetof(PyInterpreterState, imports.modules), \
|
||||
.sysdict = offsetof(PyInterpreterState, sysdict), \
|
||||
.builtins = offsetof(PyInterpreterState, builtins), \
|
||||
.ceval_gil = offsetof(PyInterpreterState, ceval.gil), \
|
||||
.gil_runtime_state_locked = offsetof(PyInterpreterState, _gil.locked), \
|
||||
.gil_runtime_state_holder = offsetof(PyInterpreterState, _gil.last_holder), \
|
||||
}, \
|
||||
.thread_state = { \
|
||||
.prev = offsetof(PyThreadState, prev), \
|
||||
.next = offsetof(PyThreadState, next), \
|
||||
.interp = offsetof(PyThreadState, interp), \
|
||||
.cframe = offsetof(PyThreadState, cframe), \
|
||||
.thread_id = offsetof(PyThreadState, thread_id), \
|
||||
.native_thread_id = offsetof(PyThreadState, native_thread_id), \
|
||||
}, \
|
||||
.interpreter_frame = { \
|
||||
.previous = offsetof(_PyInterpreterFrame, previous), \
|
||||
.executable = offsetof(_PyInterpreterFrame, f_executable), \
|
||||
.prev_instr = offsetof(_PyInterpreterFrame, prev_instr), \
|
||||
.localsplus = offsetof(_PyInterpreterFrame, localsplus), \
|
||||
.owner = offsetof(_PyInterpreterFrame, owner), \
|
||||
}, \
|
||||
.cframe = { \
|
||||
.current_frame = offsetof(_PyCFrame, current_frame), \
|
||||
.previous = offsetof(_PyCFrame, previous), \
|
||||
}, \
|
||||
.code_object = { \
|
||||
.filename = offsetof(PyCodeObject, co_filename), \
|
||||
.name = offsetof(PyCodeObject, co_name), \
|
||||
.linetable = offsetof(PyCodeObject, co_linetable), \
|
||||
.firstlineno = offsetof(PyCodeObject, co_firstlineno), \
|
||||
.argcount = offsetof(PyCodeObject, co_argcount), \
|
||||
.localsplusnames = offsetof(PyCodeObject, co_localsplusnames), \
|
||||
.localspluskinds = offsetof(PyCodeObject, co_localspluskinds), \
|
||||
.co_code_adaptive = offsetof(PyCodeObject, co_code_adaptive), \
|
||||
}, \
|
||||
.pyobject = { \
|
||||
.ob_type = offsetof(PyObject, ob_type), \
|
||||
}, \
|
||||
.type_object = { \
|
||||
.tp_name = offsetof(PyTypeObject, tp_name), \
|
||||
}, \
|
||||
.tuple_object = { \
|
||||
.ob_item = offsetof(PyTupleObject, ob_item), \
|
||||
}, \
|
||||
}, \
|
||||
.allocators = { \
|
||||
.standard = _pymem_allocators_standard_INIT(runtime), \
|
||||
.debug = _pymem_allocators_debug_INIT, \
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue