在 PyCharm 中调试 asyncio 代码会导致绝对疯狂的不可重复错误
Debugging asyncio code in PyCharm causes absolutely crazy unrepeatable errors
在我的基于 asyncio 和使用 PyCharm 调试器调试的 asyncio tcp 连接的项目中,我遇到了非常非常荒谬的错误。
如果我在 运行 之后的代码上放置断点,断点将永远不会触发。
但是,如果在启动程序之前设置了断点,则会触发断点。
但在某些情况下,触发断点会导致奇怪的错误(如果在断点处暂停并恢复)。
我备注的下一个异常:
- 类型错误:'coroutine' 对象不可调用
- 系统错误:未知操作码
第一个例外非常罕见。可以在代码的任何地方引发并且不可重复。
第二个例外是我最近第一次提到的。这在我的代码中是可重复的。我放置断点的函数是异步任务中的函数(asyncio.Task
)。我不能从头开始重复。但我认为异常类型(未知操作码??? O_O)应该让你思考。
除了!如果我更改代码,异常就会消失:例如,我添加了 a = 0
行。之后未引发异常。删除 a = 0
将再次 return 此异常。
这是一种深奥的错误吗?
我认为 PyCharm 调试器与 asnycio 冲突。
或者我做错了什么?
未知操作码可以是函数中放置断点的任何代码行。在代码中的特定位置重复。
这个异常也可以在行内,也可以在另一个函数内。非常罕见且不可复制
您使用哪个版本的python? python3.6 有新的调试器,基于在启动进程之前插入操作码。您可以在此存储库中找到更多信息 https://github.com/Elizaveta239/frame-eval
在我的基于 asyncio 和使用 PyCharm 调试器调试的 asyncio tcp 连接的项目中,我遇到了非常非常荒谬的错误。
如果我在 运行 之后的代码上放置断点,断点将永远不会触发。 但是,如果在启动程序之前设置了断点,则会触发断点。
但在某些情况下,触发断点会导致奇怪的错误(如果在断点处暂停并恢复)。
我备注的下一个异常:
- 类型错误:'coroutine' 对象不可调用
- 系统错误:未知操作码
第一个例外非常罕见。可以在代码的任何地方引发并且不可重复。
第二个例外是我最近第一次提到的。这在我的代码中是可重复的。我放置断点的函数是异步任务中的函数(asyncio.Task
)。我不能从头开始重复。但我认为异常类型(未知操作码??? O_O)应该让你思考。
除了!如果我更改代码,异常就会消失:例如,我添加了 a = 0
行。之后未引发异常。删除 a = 0
将再次 return 此异常。
这是一种深奥的错误吗?
我认为 PyCharm 调试器与 asnycio 冲突。 或者我做错了什么?
未知操作码可以是函数中放置断点的任何代码行。在代码中的特定位置重复。
这个异常也可以在行内,也可以在另一个函数内。非常罕见且不可复制
您使用哪个版本的python? python3.6 有新的调试器,基于在启动进程之前插入操作码。您可以在此存储库中找到更多信息 https://github.com/Elizaveta239/frame-eval