web-dev-qa-db-ja.com

Python debugger pdbでは、デバッグセッションを終了せずにインタラクティブモードを終了するにはどうすればよいですか?

python 3.5.1を使用

pythonデバッガモジュールを使用してスクリプトを実行すると:

_  [home]# python -m pdb myscript.py
_

これにより、デバッグセッションが開始されます。

_  > /somepath/to/myscript.py(1)<module>()
  -> import os
  (Pdb) 
_

デバッグセッション内からインタラクティブターミナルに入る場合は、interactコマンドを発行できます。

_(Pdb) interact
*interactive*
>>>
_

これで、実行中のpythonインタラクティブモードであるかのようにコードを操作できます。入力時にデバッガで実行されているスクリプトのスコープ内の関数または変数にアクセスできますinteractモード。

(デバッグを続行するために)対話モードを終了するコマンドを発行すると、デバッグセッション全体が強制終了されます。

_>>> exit()
The program exited via sys.exit(). Exit status: None
....long nasty stack trace here....

[home]#
_

私はquit()も試しましたが、デバッガーも終了します。

デバッグセッション全体を終了せずにinteractモードを終了するにはどうすればよいですか?これは可能ですか?

理想的には、コードをステップ実行し続けることができるように、中断した時点でデバッグモードに戻る必要があります。

22
Ray

EOF を送信する CtrlD うまくいくはずです:

$ python -m pdb myscript.py
> .../myscript.py(1)<module>()
-> import os
(Pdb) import code
(Pdb) code.interact()
Python 2.7.11 (default, Dec 27 2015, 01:48:39)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> <CTRL-D>
(Pdb) c
...
25
Lukas Graf

ipdbを使用していて、Windows/Windows10を使用している場合は、Cntrl-Z> Returnを使用してインタラクティブシェルを終了する必要があります。

ipython/python 3.5およびipdbおよびpdbでテスト済み

6
alpha_989

Jupyterノートブックで解決策を探している(そしてまだemacsを学びたくない)人々のために。私のために働いたものを見つけました(- here から)。

Linuxシェルの場合:

echo ^D | xclip -selection clipboard 

ただし、^ Dは文字としてではなく、ctrl-v ctrl-d...として入力します。

1
nocibambi

Emacsを使用していて、M-x Shellからpdb対話モードにアクセスしている場合、comint-quit-subjobC-c C-\)を呼び出すのが最善の方法です。これにより、comint-send-eofC-c C-d)のようにシェルプロセス全体が強制終了されるのではなく、デバッグセッション全体が強制終了され、シェルセッションに戻ります。

(venv) c:\projects\my-project> python my-entry-point.py

    550         import ipdb; ipdb.set_trace(context=10)
--> 551         print("First line to start debugging at")

ipdb> interact
*interactive*
In : # call M-x comint-quit-subjob (C-c C-\)
^C
(venv) c:\projects\my-project>

0
Lorem Ipsum

私のバージョンのSpyder(Gnome上)では、Ctrl+DまたはCtrl+Shift+Uを入力できません。インタラクティブモードをエスケープするには、テキストエディターを開いてCtrl+Shift+Uと入力し、Ctrl+Shiftを離さずにCtrl+Shift+4を押します。これにより、テキストエディタに文字を配置して、強調表示してコピーできます。次に、それをSpyderのインタラクティブモードに貼り付け、インタラクティブモードを終了してデバッガーに戻ることができます。

0
nonremovable