在Google Colab中进行调试

the*_*der 10 python deep-learning pytorch tensor google-colaboratory

我在google colab中运行以下代码片段:

%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)
Run Code Online (Sandbox Code Playgroud)

我希望调试一段代码(逐行逐步)以了解发生了什么.我想进入函数nn.Linear.

但是,当我单步执行时,它根本不会进入该功能.有没有办法逐行逐步通过nn.Linear?另外,我究竟如何在nn.Linear中设置断点?此外,我希望逐行逐步浏览片段.但是,如图所示,步骤命令也会自动逐步执行并执行print语句.

Step_though_collab

jav*_*smh 9

根据以下命令使用pdb内置断点功能:

import pdb; 
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)

命令说明

  1. list 显示文件中的当前位置
  2. h(elp) 显示命令列表,或查找特定命令的帮助
  3. q(uit) 退出调试器和程序
  4. c(ontinue) 退出调试器,继续程序
  5. n(ext) 转到程序的下一步
  6. 重复之前的命令
  7. p(rint) 打印变量
  8. s(tep) 进入子程序
  9. r(eturn) 从子程序中返回


Que*_*ker 5

从Python 3.7开始,您可以使用内置的断点函数。如果此功能不可用,则可以import pdb; pdb.set_trace()改用。

如果要执行下一行,可以尝试使用n(下一个)而不是s(步骤)。

  • 这对我来说简直是崩溃了。PYDEV 调试器警告:使用调试器时不应使用 sys.settrace()。这可能会导致调试器停止正常工作。如果需要,请检查:http://pydev.blogspot.com/2007/06/why-cant-pydev-debugger-work-with.html 以了解如何正确恢复调试跟踪。调用位置:文件“”,第334行,在set_trace sys.settrace(self.trace_dispatch)中 --Return-- None > <ipython-input-4-1a85e0b649d5>(2)<module>() 1 import pdb --- -> 2 pdb.set_trace() ipdb> s [...跳过 1 个隐藏帧] (2认同)