2017-01-11 6 views
0

私は現在、Pythonのフラスコプログラムのデバッグのメモリ使用量にしようとしている、と私は追加することによって、PDBでプログラムを実行することができるよ:私のサーバーのエントリポイントでPDBでPython Flaskサービスを実行しているとき、どのようにポーズ/中断しますか?

import pdb 
pdb.set_trace() 

。それから、私はPDBにプログラムの継続と実行を指示します。

私は、Ctrlキーを押しながらCを行うことによって、私はPDBで実行中のプログラムを一時停止することができますことを読んだが、フラスコをKeyboardInterrupt例外をキャッチされて表示されます。

^CKeyboardInterrupt 
Traceback (most recent call last): 
    File "./server.py", line 4, in <module> 
    from mauie.defaults import * 
    File "/lib/python2.7/site-packages/flask_socketio/__init__.py", line 414, in run 
    File "/lib/python2.7/site-packages/gevent/baseserver.py", line 284, in serve_forever 
    File "/lib/python2.7/site-packages/gevent/event.py", line 77, in wait 
    File "/lib/python2.7/site-packages/gevent/hub.py", line 338, in switch 
KeyboardInterrupt 

しかし、PDBプロンプトが立ち上がることはありません。

+0

なぜctrl-cを押すとPDBが起動すると思われるのかわかりません。コードを停止したいブレークポイントを作成する必要があります。 –

+0

http://stackoverflow.com/questions/10239760/interrupt-pause-running-python-program-in-pdb - この質問には可能なことが言及されていますが、Flaskの外で動作します。それはフラスコが例外を傍受してPDBがそれを見ないことです。 – Charlie

答えて

0

set_trace()は単なるPython関数なので、コード内の任意のポイントで呼び出すことができます。単純にコードにブレークポイントを追加し、そのようにメモリを調べることを考えましたか?

+0

それは事です、私はメモリの問題を捜し求めようとしていますが、コードのどこにそれが起こるかはわかりません。理想的には、問題が発生したときにプロセスを一時停止し、そこから調査することができます。 – Charlie

+0

あなたが解決しようとしているメモリの問題であれば、プロファイラを使う方が良いかもしれません。純粋なメモリプロファイラ[pypi/memory_profiler](https://pypi.python.org/pypi/memory_profiler)を含む、いくつかのプロファイラが利用できます。 – nikijean

関連する問題