gpt4 book ai didi

python - 我可以在 Python 的后台线程上放置断点吗?

转载 作者:太空狗 更新时间:2023-10-29 21:27:36 25 4
gpt4 key购买 nike

我正在使用 PyDev for Eclipse 插件,我试图在一些在后台线程中运行的代码中设置一个断点。即使代码正在执行,断点也永远不会被击中。这是一个小例子:

import thread

def go(count):
print 'count is %d.' % count # set break point here

print 'calling from main thread:'
go(13)
print 'calling from bg thread:'
thread.start_new_thread(go, (23,))

raw_input('press enter to quit.')

该示例中的断点在主线程上调用时命中,但在后台线程中调用时则不会。有什么我可以做的,还是 PyDev 调试器的限制?

更新

感谢您的变通。我提交了 PyDev feature request , 并且已经完成。它应该与版本 1.6.0 一起发布。谢谢,PyDev 团队!

最佳答案

问题是线程模块中没有 API 可以知道线程何时启动。

在您的示例中,您可以自己设置调试器跟踪功能(正如 Alex 所指出的),如下面的代码(如果您不在远程调试器中,则 pydevd.connected = True 目前是必需的——我将更改 pydev,以便不再需要它)。您可能想为 pydevd 导入添加一个 try..except ImportError(如果您没有在调试器中运行,它将失败)

def go(count):

   import pydevd
pydevd.connected = True
pydevd.settrace(suspend=False)
print 'count is %d.' % count # set break point here

现在,再三考虑,我认为 pydev 可以替换线程模块中的 start_new_thread 方法,提供它自己的函数,该函数将设置调试器并稍后调用原始函数(只是那样做,它似乎可以工作,所以,如果您使用将在几个小时后可用的 nightly,它将成为 future 的 1.6.0,它应该可以正常工作而无需执行任何特殊操作。

关于python - 我可以在 Python 的后台线程上放置断点吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114719/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com