pdb を使用して Python コードをデバッグしようとしています。c を呼び出す変数があり、c を押してこの変数を出力すると、pdb が混乱し、次のブレークポイントまでデバッグを続行します。変数の名前を変更するのは非常に難しいので、どうすればこのような混乱を避けることができますか?
質問する
527 次
3 に答える
2
変数を出力するには、次を使用しますp
p c
変数の値を出力しますc
例えば:
>>> import pdb
>>> c = [1,2,3]
>>> pdb.set_trace()
--Return--
> <stdin>(1)<module>()->None
(Pdb) p c
[1, 2, 3]
于 2013-07-30T00:30:44.927 に答える
2
!
プレフィックスを使用して、そのようなものを評価しないように pdb に指示できます。
>>> !c
... <value of c>
于 2013-07-30T00:28:57.503 に答える
1
あなたの混乱は、PDB のさまざまなコマンドが何をするかについてです。MUDに少し似ていると思いますが、かなり頻繁に機能します。
pを使用して、変数の内容を出力します (またはppを使用して、きれいに出力します (またはキャラクターの基本的なニーズを処理します)):
(Pdb) p df
Empty DataFrame
Columns: [Dist, type, Count]
Index: []
whereまたはwと入力して、スタックのどこにいるかを確認します。
(Pdb) w
-> return df[df['type']=='dev'][['Dist','Count']].as_matrix()
/home/user/core/ops.py(603)wrapper()
-> res = na_op(values, other)
> /home/user/core/ops.py(567)na_op()
-> raise TypeError("invalid type comparison")
あの小さな>
矢印が見えますか?それが私たちがスタックにいるところです。
listまたはlを使用して見回します。
(Pdb) list
564 try:
565 result = getattr(x, name)(y)
566 if result is NotImplemented:
567 >> raise TypeError("invalid type comparison")
568 except (AttributeError):
569 -> result = op(x, y)
570
571 return result
572
573 def wrapper(self, other):
574 if isinstance(other, pd.Series):
スタック内を移動するには、MUD を続行し、上( u ) または下( d ) を使用します。
args ( a ) を使用して、現在の関数が呼び出された引数を調べます。
(Pdb) args
dat = array([], shape=(0, 3), dtype=float64)
dev_classes = {81, 82, 21, 22, 23, 24, 31}
スタック内の現在のポイントでコードを入力するには、interactを使用します。Ctrl+Dで PDB に戻ります。
于 2015-03-05T22:53:19.390 に答える