Skip to content

Commit 66b7014

Browse files
committed
gh-91048: Refactor _testexternalinspection and add Windows support
Signed-off-by: Pablo Galindo <[email protected]>
1 parent 1007aab commit 66b7014

9 files changed

+483
-631
lines changed
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#ifndef Py_INTERNAL_REMOTE_DEBUG_H
2+
#define Py_INTERNAL_REMOTE_DEBUG_H
3+
#ifdef __cplusplus
4+
extern "C" {
5+
#endif
6+
7+
#ifndef Py_BUILD_CORE
8+
# error "this header requires Py_BUILD_CORE define"
9+
#endif
10+
11+
#include <stdio.h>
12+
13+
#ifndef MS_WINDOWS
14+
#include <unistd.h>
15+
#endif
16+
17+
// Define a platform-independent process handle structure
18+
typedef struct {
19+
pid_t pid;
20+
#ifdef MS_WINDOWS
21+
HANDLE hProcess;
22+
#endif
23+
} proc_handle_t;
24+
25+
// Initialize a process handle
26+
PyAPI_FUNC(int) _Py_RemoteDebug_InitProcHandle(proc_handle_t *handle, pid_t pid);
27+
28+
// Cleanup a process handle
29+
PyAPI_FUNC(void) _Py_RemoteDebug_CleanupProcHandle(proc_handle_t *handle);
30+
31+
// Get the PyRuntime section address from a process
32+
PyAPI_FUNC(uintptr_t) _Py_RemoteDebug_GetPyRuntimeAddress(proc_handle_t *handle);
33+
34+
// Get the PyAsyncioDebug section address from a process
35+
PyAPI_FUNC(uintptr_t) _Py_RemoteDebug_GetAsyncioDebugAddress(proc_handle_t *handle);
36+
37+
// Read memory from a remote process
38+
PyAPI_FUNC(int) _Py_RemoteDebug_ReadRemoteMemory(proc_handle_t *handle, uintptr_t remote_address, size_t len, void* dst);
39+
40+
// Write memory to a remote process
41+
PyAPI_FUNC(int) _Py_RemoteDebug_WriteRemoteMemory(proc_handle_t *handle, uintptr_t remote_address, size_t len, const void* src);
42+
43+
// Read debug offsets from a remote process
44+
PyAPI_FUNC(int) _Py_RemoteDebug_ReadDebugOffsets(proc_handle_t *handle, uintptr_t *runtime_start_address, _Py_DebugOffsets* debug_offsets);
45+
46+
#ifdef __cplusplus
47+
}
48+
#endif
49+
#endif /* !Py_INTERNAL_DEBUG_OFFSETS_H */

Makefile.pre.in

+1
Original file line numberDiff line numberDiff line change
@@ -1290,6 +1290,7 @@ PYTHON_HEADERS= \
12901290
$(srcdir)/Include/internal/pycore_crossinterp.h \
12911291
$(srcdir)/Include/internal/pycore_crossinterp_data_registry.h \
12921292
$(srcdir)/Include/internal/pycore_debug_offsets.h \
1293+
$(srcdir)/Include/internal/pycore_remote_debug.h \
12931294
$(srcdir)/Include/internal/pycore_descrobject.h \
12941295
$(srcdir)/Include/internal/pycore_dict.h \
12951296
$(srcdir)/Include/internal/pycore_dict_state.h \

0 commit comments

Comments
 (0)