[解決済み] PythonでSpyderを使った効率的なデバッグを行うには?
質問
Pythonが好きでSpyderも好きなのですが、Spyderでデバッグをするとひどい目にあいます。
- ブレークポイントを置くたびに、2つのボタンを押す必要があります。 続行ボタン (最初の行で自動的に一時停止します) です。 を自動的に一時停止します)、これは迷惑です。
- さらに、自動補完などのある標準的な iPython コンソールではなく、ゴミのような ipdb>> コンソールを使用しています。
- 最悪なのは、何がバグなのかを突き止めるためにプリントや簡単な評価を書いても、このコンソールが非常に頻繁にフリーズすることです。これは MATLAB よりもはるかにひどいです。
- 最後になりましたが、もし私が ipdb>> コンソール内から関数を呼び出して、そこにブレークポイントを置くと、そこで止まりません。 それは、私がデバッグを開始する前に、そこにブレークポイントを置く必要があるように思われます。 デバッグを開始する前にブレークポイントを置かなければならないようです ( Ctrl+F5 ).
Pythonスクリプトや関数をどのようにデバッグしているのか、解決策をお持ちですか?
私は Windows 8.1 64bit 上で Anaconda の新規インストールを使用しています。
どのように解決するのですか?
( Spyder メンテナはこちら ) 私たちの 4.2.0 バージョン(2020年11月リリース)以降、Spyderでのデバッグ体験は非常に良いものとなっています。現在提供しているものは、Matlabから来た人がデバッガに期待するもの、つまりIPythonのように動作し、現在のブレークポイントやフレームでの変数を検査したりプロットしたりできるものです。
さて、あなたの指摘についてです。
-
デバッグしようとしているファイルにブレークポイントが存在する場合、Spyder はデバッグモードに入り、最初のブレークポイントに合致するまで続けます。別のファイルに存在する場合は、やはり最初に
Debug
を押して、次にContinue
. -
IPdb
はIPythonのデバッガコンソールです。Spyder 4.2.0 以降では、コード補完、シンタックスハイライト、上下矢印によるコマンドの履歴閲覧(IPython の履歴とは別)、コードの複数行評価、Matplotlib によるインラインおよび対話型プロットなどがあります。 -
これは現在修正されています。また、PythonのコードとPdbコマンドの衝突を避けるため、(例えば)変数に
n
と書いてn
を実行する代わりに、プロンプトでその値を表示するようにします。n
Pdbコマンドを実行する代わりに表示します。そのコマンドを代わりに実行するには、次のように感嘆符を前につける必要があります。!n
-
これも直りました。ブレークポイントを設定するには
IPdb
でブレークポイントを設定すると、現在のセッションでそれが考慮されます。
関連
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] CSVデータを処理する際、1行目のデータを無視する方法を教えてください。
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] pandasのDataFrameから空のセルを含む行を削除する
-
[解決済み] バブルソートの宿題
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] オブジェクトのリストに特定の属性値を持つオブジェクトが含まれているかどうかをチェックする
-
[解決済み] subprocess.run()の出力を抑制またはキャプチャするには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] PythonのRequestsモジュールを使ってWebサイトに "ログイン "するには?
-
[解決済み] 認証プラグイン 'caching_sha2_password' はサポートされていません。