前の関連記事:Eclipse: PyDevメモ: Mixed Indentation: Spaces foundへの対応
Eclipseのデバッガのコンソールでブレークしたところでコマンドを打つ
普通にEclipseでデバッガを起動したときはコンソールビューが上下に分かれていてて、下の枠にコマンドを入力すると上の枠にその出力結果が見れます。
下の枠の名前はconsole promptというようで、Hide console promptボタンをクリックすると下の枠が見えなくなります。
ブレークしている状態のオブジェクトを操作できるのでこの機能はとても便利です。
import pydevd; pydevd.settrace()でブレークしたときはコンソールで結果が見れない
LibreOfficeの拡張機能のデバッグはlinuxBean14.04(159)unohelper.ImplementationHelper()をデバッガにかけるのimport pydevd; pydevd.settrace()を挿入する方法でできます。
しかしPyDevエディタでブレークポイントを設定する方法と違ってConsoleビューは上下に分かれておらず、ブレークした状態でコンソールからコマンドを入力しても結果がみれません。
仕方ないので出力値を変数に取得するとその値をVariableタブで確認できました。
Variablesビューでは変更された値やメソッドは背景色が変わるのですぐにわかります。
traceback.print_exc()の結果を取得する方法
import pydevd; pydevd.settrace(stdoutToServer=True, stderrToServer=True)
これでConsoleにtraceback.print_exc()の結果が出力できました。
stdoutも取得したいのですがいまのところやり方がわからないですね。
(2017.8.1追記。
マクロではデバッグコードを挿入して、やり直してみたらちゃんと出力が得られました。
ただし、マクロを編集したあとはLibrreOfficeを再起動しないといけません。)
PyDev Debug Consoleではpyunoのメソッドが使えない
ConsoleタブにあるOpen ConsoleボタンからPyDev Console→PyDev Debug Consoleとするとブレークした状態でのコマンドの操作ができますが、インタープリターがシステムPythonになってしまうせいか、pyunoオブジェクトのメソッドを使おうとするとSystemError: pyuno runtime is not initializedと言われてしまいます。
どこか設定をいじれば解決するかもしれませんが、いまのところは上の方法で事足りるのでそれ以上調べていません。
0 件のコメント:
コメントを投稿