1 parent 6e69e82 commit 33b503cCopy full SHA for 33b503c
1 file changed
2026-04-19-python-process-injection.md
@@ -7,7 +7,7 @@ tags: [python, 安全, cpython]
7
8
线上 Python 服务卡住、CPU 飙高,或者某个数据任务跑了几个小时以后开始变慢时,重启往往是最后手段。进程里的现场还在:线程停在哪一层调用栈,哪些对象还活着,哪个函数正在反复分配内存。进程一停,这些信息也就没了。
9
10
-这时自然会想:能不能趁这个 PID 还活着,把一小段诊断逻辑送进去,让它在原来的 Python 解释器里执行?这就是**进程注入**,也常叫 process inject。它不是为了给业务代码增加新功能,而是让外部工具临时进入目标进程,读取运行时状态、安装 hook,或者启动一个诊断 agent。
+能不能趁这个 PID 还活着,把一小段诊断逻辑送进去,让它在原来的 Python 解释器里执行?这就是**进程注入**,也常叫 process inject。它不是为了给业务代码增加新功能,而是让外部工具临时进入目标进程,读取运行时状态、安装 hook,或者启动一个诊断 agent。
11
12
[pyrasite](https://github.com/lmacken/pyrasite)、[memray](https://github.com/bloomberg/memray)、[peeka](https://github.com/wwulfric/peeka) 都依赖这类能力,只是进入目标进程的方式越来越谨慎。接下来按三代方案展开:GDB 直接调用 C API、`dlopen + pthread`、以及 Python 3.14 之后的 PEP 768。
13
0 commit comments