在 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

如何在 Google Chrome 中调试选项卡崩溃

如何在 google colab 中启用拼写检查器(colab 在 linux OS 上运行)?

google.colab 模块中是不是有关闭运行时的功能