【发布时间】:2020-03-22 09:22:09
【问题描述】:
我正在处理大量数据的 PyCharm,并尝试调试各种处理函数,这些函数作用于使用这些数据组装的对象。由于新的调试不会带来控制台存储的变量,我发现有必要在每次调试时缓慢地重新加载数据。到目前为止,我已经使用 pickle 来保存对象,然后更快地重新加载它们,但这仍然不理想。
有没有办法在加载数据的控制台中工作,并在必要时开始一个调试会话,该会话从该控制台先前加载的数据变量开始?
提前致谢!
【问题讨论】:
我正在处理大量数据的 PyCharm,并尝试调试各种处理函数,这些函数作用于使用这些数据组装的对象。由于新的调试不会带来控制台存储的变量,我发现有必要在每次调试时缓慢地重新加载数据。到目前为止,我已经使用 pickle 来保存对象,然后更快地重新加载它们,但这仍然不理想。
有没有办法在加载数据的控制台中工作,并在必要时开始一个调试会话,该会话从该控制台先前加载的数据变量开始?
提前致谢!
【问题讨论】:
您需要使用 PyCharm 调试器吗?您是否考虑过使用pdb?这内置于所有 python 安装中。它是一个命令行调试器,如果你不习惯它会很吓人,但它实际上非常简单。因为它在控制台上运行,所以您可以在控制台上运行的任何 python 程序都可以在调试器中运行,无需扭曲即可让您的代码在 PyCharm 等 IDE 中运行。
获取方式:
python -m pdb mymodule.py 调用您的代码
使用以下命令在 python 解释器中运行您的代码:
import pdb
import mymodule
pdb.run('mymodule.entry_function()')
将以下内容添加到您想要停下来环顾四周的代码中:
import pdb
pdb.set_trace()
进入调试器后(您将看到命令行提示符(pdb)),您可以使用调试器命令。其中包括(并非详尽无遗,请参阅文档了解更多信息):
b(reak) <line_number> - 在指定行设置断点c(ontinue) - 将代码运行到下一个断点或执行结束n(ext) - 执行当前函数的下一行s(tep) - 在任何函数中执行下一行(即跟随当前函数调用)您还可以在任何时候通过键入变量的名称来检查变量,并且您可以执行 python 代码,就好像您处于程序已到达的程序执行点一样。
上面的python文档很不错,见https://docs.python.org/3/library/pdb.html
【讨论】: