3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Google Colaboratoryでデバッグを行う方法

Posted at

デバッグを行いたい場所に以下のコードを入力します。

from IPython.core.debugger import Pdb; Pdb().set_trace()

このコードを読み込まれた時点で、Python 標準のデバッグツールである pdb が起動します。

pdbの基本的なコマンドは以下のとおりです。

  • h [command]:ヘルプを出す
  • p [expression]:式を評価して出力する
  • n:次の行へ
  • c:次のブレークポイントへ
  • q:その場で終了する

他にもいろんなコマンドがあるのでpdbコマンド一覧を見てみるといいかもです。

[w:スタックトレースを含んだ現在位置を示す] コマンドなんかはどのような手順で関数が呼び出されたのかを把握できたりするので便利です。

具体例

例えば、以下の例を見てみましょう。

def harmonic(n):
  acc = 0
  for i in range(n):
    from IPython.core.debugger import Pdb; Pdb().set_trace()
    acc += 1.0 / i
  return acc
print(harmonic(10))
> <ipython-input-8-8f37e64adc73>(5)harmonic()
      3   for i in range(n):
      4     from IPython.core.debugger import Pdb; Pdb().set_trace()
----> 5     acc += 1.0 / i
      6   return acc
      7 print(harmonic(10))

ipdb> p acc
0
ipdb> p i
0
ipdb> c
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-8-8f37e64adc73> in <module>()
      5     acc += 1.0 / i
      6   return acc
----> 7 print(harmonic(10))

<ipython-input-8-8f37e64adc73> in harmonic(n)
      3   for i in range(n):
      4     from IPython.core.debugger import Pdb; Pdb().set_trace()
----> 5     acc += 1.0 / i
      6   return acc
      7 print(harmonic(10))

ZeroDivisionError: float division by zero

参考文献

Google Colaboratoryでのデバッグのやり方

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?