このサンプル スクリプトを ipdb でデバッグしようとすると、次のようになります。
n = 1
next = 1
print('end')
Python 変数が pdb コマンドを覆い隠しているため、3 行目を実行できません。
$ ipdb test.py
> /tmp/test.py(1)<module>()
----> 1 n = 1
2 next = 1
3 print('end')
ipdb> next
> /tmp/test.py(2)<module>()
1 n = 1
----> 2 next = 1
3 print('end')
ipdb> next
> /tmp/test.py(3)<module>()
1 n = 1
2 next = 1
----> 3 print('end')
ipdb> next
1
ipdb> n
1
ipdb> !n
1
ipdb> !next
1
両方のコマンド (n/next) が認識されなくなった場合、コードの実行をさらに進めるにはどうすればよいですか? (s/step も変数によって隠されていると仮定しましょう)。
私がこれまでに試したこと:
- ipdb の代わりに ipdb3 を使用 - 同じ問題 (私の場合、ipdb が ipdb3 にリンクされているためかもしれません:))
- pdb を使用 - 動作します! n/next コマンドは、python 変数を表示する代わりに次の行に移動します。ipdb の何が問題になっていますか?
!!n
問題を軽減します - の ipdb バージョンを実行しnext
ます。私がalias n !!n
それを実行するために繰り返し使用することができればEnter
、問題は解決するでしょう. ただし、エイリアスを実行する代わりにEnter
変数を表示するだけです(これはに解決されるはずです)n
n
!!n
私は使用しています
- マンジャロ Linux 16.10
- Python 3.5.2 :: アナコンダ 4.2.0 (64 ビット)
- ipdb (0.10.1)
- ipython (5.1.0)
- ipython-genutils (0.1.0)
- ~/.pdbrc ファイルがありません
編集
この問題は次の方法で修正されました: https://github.com/ipython/ipython/pull/10050