在 Google Colab 中调试
Posted
技术标签:
【中文标题】在 Google Colab 中调试【英文标题】:Debugging in Google Colab 【发布时间】:2019-03-10 10:25:37 【问题描述】:我在 google colab 的单个单元格中运行以下代码 sn-p:
%debug
# Create tensors of shape (10, 3) and (10, 2).
x = torch.randn(10, 3)
y = torch.randn(10, 2)
# Build a fully connected layer.
linear = nn.Linear(3, 2)
print ('w: ', linear.weight)
print ('b: ', linear.bias)
我希望调试一段代码(逐行逐行执行)以了解发生了什么。我希望进入函数 nn.Linear。
但是,当我单步执行时,它根本没有进入函数。有没有办法逐行遍历 nn.Linear?另外,我究竟如何在 nn.Linear 中设置断点?此外,我还希望逐行了解 sn-p。但是,如图所示,step 命令会自动单步执行并执行 print 语句。
【问题讨论】:
【参考方案1】:从 Python 3.7 开始,您可以使用内置的 breakpoint function。如果这不可用,您可以改用import pdb; pdb.set_trace()
。
如果你想执行下一行,你可以尝试n
(下一个)而不是s
(步骤)。
【讨论】:
【参考方案2】:您可以使用内置的断点函数在 nn.Linear 中设置断点。
import sys; sys.breakpoint()
还有更多可用的交互式调试命令,
Command Description
list Show the current location in the file
h(elp) Show a list of commands, or find help on a specific command
q(uit) Quit the debugger and the program
c(ontinue) Quit the debugger, continue in the program
n(ext) Go to the next step of the program
<enter> Repeat the previous command
p(rint) Print variables
s(tep) Step into a subroutine
r(eturn) Return out of a subroutine
【讨论】:
【参考方案3】:根据以下命令使用pdb内置断点功能:
import pdb;
pdb.set_trace()
命令说明
-
list 显示文件中的当前位置
h(elp) 显示命令列表,或查找特定命令的帮助
q(uit) 退出调试器和程序
c(ontinue) 退出调试器,继续程序
n(ext) 进入程序的下一步
重复上一条命令
p(rint) 打印变量
s(tep) 进入子程序
r(eturn) 退出子程序
【讨论】:
以上是关于在 Google Colab 中调试的主要内容,如果未能解决你的问题,请参考以下文章
通过 ngrok flask 限制器在 google colab 上运行烧瓶服务器不起作用
在 VM 引擎中导入 google.colab 不会让我在 Google Colab 中运行 Jupyter Notebook?
sh 在Android中调试Google Analytics