在 PyCharm 中调试 asyncio 代码会导致绝对疯狂的不可重复错误

Art*_*nov 5 python debugging breakpoints pycharm python-asyncio

在我基于使用 PyCharm 调试器调试的 asyncio 和 asyncio tcp 连接的项目中,我遇到了非常非常荒谬的错误。

如果我在运行后在代码上放置断点,则断点永远不会触发。但是,如果在启动程序之前放置了断点,则会触发断点。

但在某些情况下,断点触发会导致奇怪的错误(如果在断点上暂停并恢复)。

我说的下一个例外情况:

  1. 类型错误:“协程”对象不可调用
  2. 系统错误:未知操作码

第一个例外是非常罕见的。可以在代码的任何地方提出并且不可重复。第二个例外我最近第一次评论。这在我的代码中是可重复的。我放置断点的函数是异步任务 ( asyncio.Task) 中的函数。我不能从头开始重复。但我认为异常的类型(未知操作码???O_O)应该让你思考。除了!如果我更改代码,异常就会消失:例如,我添加了该a = 0行。之后未引发异常。删除a = 0将再次返回此异常。

这是一种深奥的错误吗?

我认为 PyCharm 调试器与 asnycio 冲突。或者我做错了什么?


未知操作码可以是函数中放置断点的任何代码行。在代码中的特定位置重复。 未知操作码


这个异常也可以在行内,也可以在另一个函数内。非常罕见且不可复制 在此处输入图片说明

dyu*_*yus 1

你使用哪个版本的Python?python3.6 有一个新的调试器,基于在启动进程之前插入操作码。您可以在此存储库中找到更多信息https://github.com/Elizaveta239/frame-eval