私はPythonボトルアプリケーション(Python2.7.2およびBottle0.10.9)を作成し、Linux用のWingIDE(3.2.8-1)Professionalで開発しています。ボトルアプリケーションをデバッグする場合を除いて、これはすべてうまく機能します。WingIDE内でスタンドアロンモードで実行していますが、Bottle.debug(False)を設定しても、コード内のどのブレークポイントでも停止しません。WingIDE内のブレークポイントで停止するようにBottleを設定する方法について、誰かが提案/アイデアを持っていますか?
2 に答える
リローダーをtrueに設定している場合、bottleは実際のアプリのサブプロセスを開始します。ウィングでは、リローダーをオフにする必要があります。そうすれば、機能するはずです。
run(reloader=False).
ただし、変更を加えるたびに、ウィングでアプリを再起動する必要があります。
wingdbstub.pyを使用してWSGIでデバッグしていますか、それともIDEからボトルを起動していますか?私はボトルにあまり詳しくありませんが、一般的な問題は、デバッグされていないサブプロセスでコードを実行するWebフレームワークのリロードメカニズムです。ボトルがWSGIでそれを行うかどうかはわかりませんが、wingdbstubのインポート時(またはIDEから起動する場合は起動時)にプロセスIDを出力し、ブレークポイントが欠落している行で再度出力すると、これが除外されます。Bottle.__init__の「reloader」引数がここに関連している可能性があります。Trueに設定されている場合は、WingでデバッグするときにFalseに設定してみてください。
もう1つの試みは、ブレークポイントが存在する場所で意図的に例外を発生させることです( "assert 0、'test exception'"など、この例外が例外ツールのWingのデバッガーで報告されるかどうか、報告される場合はWingがなんとか開くことができるかどうかを確認します。ソースコード。ボトルがソースコードを見つけることができない方法でコードを実行している場合、これはアサーションで停止します(ホストコードが例外を処理する場合でも、Wingのデバッガーはデフォルトですべてのアサーションで停止します)がデバッグファイルの表示に失敗し、ステータス領域(IDE画面のボトルとメッセージツール)に、デバッグプロセスが指定したファイル名を示すメッセージが表示されます。これによっては、問題を修正できる場合があります(ただし、ファイル名が「」のような場合は、Bottleを変更する必要があります。
ところで、Wingのデバッガーでのみ実行されるコードを挿入するには、次のようにします。
import os if'WINGDB_ACTIVE' in os.environ:#ここにコード
これで問題が解決しない場合は、wingwaredotcomのサポートにメールでお問い合わせください。