組織モードでのコードブロックのデバッグ


11

組織モードブロックのエラーのトレースを簡単にするために利用できるツールはありますか?(私は特にPythonで作業しています)

現在のワークフローは、機能するコードをソースブロックにコピーし、最小限の変更のみを行うことです。大きなエラーが発生した場合は、それを別のファイルにコピーして戻すか、ブロックをもつれさせて結果のファイルをデバッグします。

不足しているツールはありますか?(たとえば、エラーが発生している行に移動するコンパイルモードのようなもの。)

編集:たとえば、Cc Cv vを見つけただけで、noweb参照が展開されたバッファーが表示されます。残念ながら、これにはヘッダー引数が含まれていないため、インタープリターに最初にそれらをインポートしないと、このコードは実行できません。同様に、returnステートメントがあり、それが実行されないようにしていて、バッファーが編集できない場合は、Pythonブロックから実行可能なソースを取得するためにいくつかの手順を実行します。


3
emacs.stackexchange.com/questions/13244/…を参照してください。私の現在のお気に入りのソリューションは(org-src-debug)です。これには、入力引数を使用してソースコードブロックをデバッグできるという利点があります。
トビアス

同様の問題を持つ他のユーザーへのコメント:user2699は質問を編集して、Pythonソースコードブロックをデバッグしたいことを明確にしました。Tobiasの最後のコメントは、emacs-lispコードブロックの実行にのみ適用されます。
Tobias

1
:sessionコードブロックにヘッダーを追加しましたか?例えば:session *my-python*。次に*my-python*、別のフレームまたはウィンドウのバッファでスクリプトの実行を監視します。私はあなたがこれより正しいものより洗練された何かを望んでいると思いますか?
Melioratus、2015

@Melioratus、それは少しプリミティブです(エラーを適切に処理していないようで、Pythonコンソールに追加の出力を追加します)が、何もないよりはるかに優れています。そして、Pythonコンソールはとてもいいです。回答として提出してください。
user2699

@トビアス、ありがとう、それは私が探しているようなもので、単にelispに固有のものではありません。
user2699

回答:


7

方法1

  1. :sessionソースブロックにヘッダーを追加します。

    この例では、:sessionヘッダーを使用すると、指定したバッファー内のコードが実行され、*my-python*デバッグメッセージが表示されます。

    #+BEGIN_SRC python :session *my-python*
      'Hello {0}\n'.format('World')
    #+END_SRC
    

    チップ:

    • C-c C-v C-z画面を垂直に分割し、インタラクティブ*my-python*バッファを表示するために使用します。
    • C-c C-v ?他の便利なショートカットを表示するために使用します。

方法2

  1. コードブロックにポイントを配置しC-c '、を使用してブロックを編集しますorg-edit-special。このメソッドを使用すると、python-mode組み込み機能を使用できます。

  2. でPythonインタープリターを開始するとC-c C-p、ウィンドウが分割され、バッファー名が開きます*Python*。Pythonインタープリターバッファーに切り替えるには、を押しC-c C-zます。

    注:最近、*Warnings*代わりにバッファが表示されることに気付きました。*Warnings*バッファ内にポイントを置いて押すだけでバッファqが表示されます*Python*

  3. 終了したら、を使用して更新したコードをコードブロックに伝播するC-c 'か、を使用して変更を破棄しC-c C-kます。


このコードは、次を使用してテストされていることに注意してください:
emacsバージョン:GNU Emacs 26.1
org-modeバージョン:9.1.14

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.