1. ホーム
  2. python

[解決済み] PythonでSpyderを使った効率的なデバッグを行うには?

2023-07-14 21:07:23

質問

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のように動作し、現在のブレークポイントやフレームでの変数を検査したりプロットしたりできるものです。

さて、あなたの指摘についてです。

  1. デバッグしようとしているファイルにブレークポイントが存在する場合、Spyder はデバッグモードに入り、最初のブレークポイントに合致するまで続けます。別のファイルに存在する場合は、やはり最初に Debug を押して、次に Continue .

  2. IPdb はIPythonのデバッガコンソールです。Spyder 4.2.0 以降では、コード補完、シンタックスハイライト、上下矢印によるコマンドの履歴閲覧(IPython の履歴とは別)、コードの複数行評価、Matplotlib によるインラインおよび対話型プロットなどがあります。

  3. これは現在修正されています。また、PythonのコードとPdbコマンドの衝突を避けるため、(例えば)変数に n と書いて n を実行する代わりに、プロンプトでその値を表示するようにします。 n Pdbコマンドを実行する代わりに表示します。そのコマンドを代わりに実行するには、次のように感嘆符を前につける必要があります。 !n

  4. これも直りました。ブレークポイントを設定するには IPdb でブレークポイントを設定すると、現在のセッションでそれが考慮されます。