[解決済み] IPythonによるステップバイステップのデバッギング
質問
私が読んだところでは、Pythonでコードをデバッグする方法は2つあります。
-
のような伝統的なデバッガを使用します。
pdb
またはipdb
. これは、次のようなコマンドをサポートしています。c
に対してcontinue
,n
についてstep-over
,s
についてstep-into
など)、しかし、オブジェクトの検査に非常に便利なIPythonシェルに直接アクセスすることはできません。 -
使用方法 IPython によって 埋め込み IPythonのシェルをコードに組み込むことができます。次のようなことができます。
from IPython import embed
を使用し、その後にembed()
をコードに組み込んでください。あなたのプログラム/スクリプトがembed()
という文があると、IPythonのシェルに落とされます。これにより、IPythonの良いところをすべて使って、オブジェクトの完全な検査とPythonコードのテストができるようになります。しかしembed()
はできません。 ステップバイステップ キーボードのショートカットを使って、もうコードを書くことはできません。
両者の良いところを組み合わせる方法はないのでしょうか?すなわち
- できること ステップ・バイ・ステップ 便利な pdb/ipdb キーボードショートカットを使って、あなたのコードを処理します。
- そのようなステップ(例えば、与えられたステートメント上)において、本格的な IPython シェル .
IPythonデバッギング のように MATLABです。
このタイプの "enhanced debugging" の例は、MATLAB で見ることができ、ユーザーは次のようになります。 常に はMATLABエンジン/シェルへのフルアクセスを持っていますが、その際も <強い ステップ・バイ・ステップ 条件付きブレークポイントを設定することもできます。他のユーザーと議論したところ、これはMATLABからIPythonに移行する際に、人々が最も恋しいと思うデバッグ機能です。
Emacsや他のエディタでのIPythonのデバッグ。
あまり具体的な質問にはしたくないのですが、私はほとんどEmacsで仕事をしているので、この機能をEmacsに取り入れる方法はないでしょうか? 理想的なのは Emacs(またはエディタ)は、プログラマがコード上の任意の場所にブレークポイントを設定し、インタプリタまたはデバッガと通信して、任意の場所で停止させ、その場所で完全なIPythonインタプリタを表示させることができるようにします。
どのように解決するのですか?
IPythonの
%pdb
マジック
. 呼び出すだけ
%pdb
をIPythonで実行し、エラーが発生すると、自動的に
ipdb
. すぐにステップを踏んでいない間、あなたは
ipdb
を経てからです。
このため、個々の関数のデバッグが容易になります。
%load
を作成し、関数を実行します。を使って強制的にエラーにすることができます。
assert
を適切な位置に配置する。
%pdb
はラインマジックです。呼び方は
%pdb on
,
%pdb 1
,
%pdb off
または
%pdb 0
. 引数なしで呼び出された場合は、トグルとして動作します。
関連
-
Pythonコンテナのための組み込み汎用関数操作
-
pythonを使ったオフィス自動化コード例
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】ImportError: PILという名前のモジュールがない
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] IPythonノートブックmatplotlibプロットをインラインで行う方法
-
[解決済み】IPythonのサブモジュールの再読み込みについて
-
[解決済み】Google Chromeでデバッグ時にスクリプトの実行を終了させる方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python call matlab メソッドの詳細
-
Pythonによるjieba分割ライブラリ
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み] 'DataFrame' オブジェクトに 'sort' 属性がない
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac
-
[解決済み】ValueError: xとyは同じサイズでなければならない