Debug dei blocchi di codice in modalità organizzazione


11

Sono disponibili strumenti per rendere più semplici gli errori di traccia nei blocchi in modalità org? (Sto lavorando con Python in particolare)

Il mio flusso di lavoro attuale è quello di copiare il codice che funziona su un blocco sorgente e provare a apportare solo modifiche minime. Se si verificano errori importanti, lo copio di nuovo in un altro file o aggroviglio il blocco ed eseguo il debug del file risultante.

Ci sono degli strumenti che mi mancano? (ad esempio, qualcosa come la modalità di compilazione in cui ti porterebbe sulla riga in cui si trova l'errore.)

Modifica: per esempio, ho appena trovato Cc Cv v, che fa apparire un buffer con riferimenti noweb espansi. Sfortunatamente, non include argomenti di intestazione, quindi il codice da questo non può essere eseguito senza prima importare quelli nell'interprete. Allo stesso modo, se ho un'istruzione return, che ne impedisce l'esecuzione, e il buffer non è modificabile, quindi sono necessari diversi passaggi per ottenere il codice eseguibile da un blocco Python.


3
Vedi emacs.stackexchange.com/questions/13244/… . La mia attuale soluzione preferita è (org-src-debug). Ciò ha il vantaggio di poter eseguire il debug dei blocchi di codice sorgente con argomenti di input.
Tobias,

Commento per altri con problemi simili: user2699 ha modificato la domanda per chiarire che desidera eseguire il debug dei blocchi di codice sorgente di Python . L'ultimo commento di Tobias si applica solo all'esecuzione di blocchi di codice emacs-lisp .
Tobias,

1
Hai aggiunto :sessionun'intestazione al tuo blocco di codice? es :session *my-python*. Quindi basta guardare l'esecuzione dello script nel *my-python*buffer in un altro frame o finestra. Immagino che tu voglia qualcosa di più sofisticato di questo corretto?
Melioratus,

@Melioratus, è un po 'primitivo (non sembra gestire bene gli errori e aggiunge un output extra nella console di Python), ma è molto meglio del niente. E la console di Python è molto bella. Dovresti inviarlo come risposta.
user2699

@Tobias, grazie, è il genere di cosa che sto cercando, non specifico di elisp.
user2699

Risposte:


7

Metodo 1

  1. Aggiungi :sessionintestazione al blocco sorgente.

    Nell'esempio, usando l' intestazione : session verrà eseguito il codice all'interno di un buffer denominato *my-python*e verranno visualizzati i messaggi di debug.

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

    Suggerimenti:

    • Utilizzare C-c C-v C-zper dividere lo schermo in verticale e visualizzare il *my-python*buffer interattivo .
    • Utilizzare C-c C-v ?per visualizzare altre scorciatoie utili.

Metodo 2

  1. Posizionare il punto nel blocco di codice e modificare il blocco utilizzando C-c ', ad es org-edit-special. Questo metodo ti consentirà di utilizzare la python-modefunzionalità integrata.

  2. Avvia interprete python con C-c C-p, che dividerà la finestra e aprirà il nome del buffer *Python*. Per passare al buffer dell'interprete Python, premere C-c C-z.

    Nota: recentemente ho notato che è stato *Warnings*visualizzato un buffer. Posiziona il punto all'interno del *Warnings*buffer e premi qper visualizzare il *Python*buffer.

  3. Al termine, propagare il codice aggiornato in blocco di codice con C-c 'o scartare eventuali modifiche con C-c C-k.


Nota che questo codice è stato testato usando:
emacs versione: GNU Emacs 26.1
versione org-mode: 9.1.14

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.