Update 20190813 Building a non-breaking breakpoint for Python debugging.md

This commit is contained in:
caiichenr 2020-03-07 01:23:35 +08:00 committed by GitHub
parent 3a7c5ddebd
commit 225e161672
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -159,12 +159,12 @@ def simple_method():
Python 解释器的工作主要分为两个阶段:
1. **将Python源码编译成Python字节码** 这种不可读(对人类而言)的格式专为执行的效率而优化,它们通常缓存在我们熟知的 **.pyc** 文件当中。
1. **将 Python 源码编译成 Python 字节码:** 这种不可读(对人类而言)的格式专为执行的效率而优化,它们通常缓存在我们熟知的 **.pyc** 文件当中。
2. **遍历 _interpreter loop_ 中的字节码:** 在这一步中解释器会逐条的执行指令
我们选择的模式是:使用 **字节码操作** 来设置没有全局额外开销的 **不中断断点** 这种方式的实现首先需要在内存中的字节码里找到我们感兴趣的部分,然后在该部分的相关机器指令前插入一个函数调用。如此一来,解释器无需任何额外的工作即可实现我们的不中断断点。
我们选择的模式是:使用**字节码操作**来设置没有全局额外开销的**不中断断点**。这种方式的实现首先需要在内存中的字节码里找到我们感兴趣的部分,然后在该部分的相关机器指令前插入一个函数调用。如此一来,解释器无需任何额外的工作即可实现我们的不中断断点。
这种方法并不依靠魔法来实现,让我们简要地举个例子。