Skip to content

Commit b04fbc5

Browse files
committed
gh-91048: Refactor _testexternalinspection and add Windows support
Signed-off-by: Pablo Galindo <pablogsal@gmail.com>
1 parent 1007aab commit b04fbc5

9 files changed

+482
-630
lines changed
Lines changed: 49 additions & 0 deletions
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

Lines changed: 1 addition & 0 deletions
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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy