pycharm 是如何工作的?他们是如何连接到解释器的?
How does pycharm work? How did they hook into the interpreter?
我知道如何使用 PyCharm 的调试器,但这只会加深我对它如何完成与 Python 解释器如此紧密耦合的任务的好奇心。
cPython 是否有某种隐藏在其自身中的解释器挂钩,或者 PyCharm 是否以某种方式复制源代码、检测代码,然后执行它?
感谢@unholySheep,我能够从 PyDev.Debugger 上的 github src 返回到 sys.settrace which lead to a post on Python Module of the week on settrace。
一旦跟踪脚本有了堆栈帧,检查帧的堆栈内容和/或在上下文中使用 code/exec/eval
到 运行 "watch" 语句可能是一项不平凡的任务.至于断点,那将是微不足道的,因为它只是匹配框架的行号和文件路径的任务。
我知道如何使用 PyCharm 的调试器,但这只会加深我对它如何完成与 Python 解释器如此紧密耦合的任务的好奇心。
cPython 是否有某种隐藏在其自身中的解释器挂钩,或者 PyCharm 是否以某种方式复制源代码、检测代码,然后执行它?
感谢@unholySheep,我能够从 PyDev.Debugger 上的 github src 返回到 sys.settrace which lead to a post on Python Module of the week on settrace。
一旦跟踪脚本有了堆栈帧,检查帧的堆栈内容和/或在上下文中使用 code/exec/eval
到 运行 "watch" 语句可能是一项不平凡的任务.至于断点,那将是微不足道的,因为它只是匹配框架的行号和文件路径的任务。