조직 모드에서 코드 블록 디버깅


11

조직 모드 블록의 추적 오류를 쉽게하는 데 사용할 수있는 도구가 있습니까? (특히 파이썬으로 작업하고 있습니다)

현재 진행중인 워크 플로는 작동하는 코드를 소스 블록에 복사하고 최소한의 수정 만 시도하는 것입니다. 중대한 오류가 발생하면 다른 파일로 다시 복사하거나 블록을 엉켜서 결과 파일을 디버깅합니다.

누락 된 도구가 있습니까? (예 : 오류가있는 라인으로 이동하는 컴파일 모드와 같은 것)

편집 : 예를 들어, Cc Cv v를 발견했는데 noweb 참조가 확장 된 버퍼가 나타납니다. 불행히도 헤더 인수가 포함되어 있지 않으므로 해석기에서 코드를 먼저 가져 오지 않으면이 코드를 실행할 수 없습니다. 마찬가지로 return 문이 있으면 실행되지 않고 버퍼를 편집 할 수 없으므로 파이썬 블록에서 실행 가능한 소스를 얻는 데 몇 가지 단계가 필요합니다.


3
emacs.stackexchange.com/questions/13244/…를 참조하십시오 . 내가 현재 가장 좋아하는 솔루션은 (org-src-debug)입니다. 이는 입력 인수로 소스 코드 블록을 디버그 할 수 있다는 이점이 있습니다.
Tobias

비슷한 문제를 가진 다른 사람들에 대한 의견 : user2699는 파이썬 소스 코드 블록 을 디버그하고 싶다는 것을 분명히하기 위해 질문을 편집했습니다 . Tobias의 마지막 주석은 emacs-lisp 코드 블록 실행에만 적용됩니다 .
Tobias

1
:session코드 블록에 헤더를 추가 했습니까 ? 예 :session *my-python*. 그런 다음 *my-python*다른 프레임이나 창 에서 버퍼에서 스크립트 실행을보십시오 . 이보다 더 세련된 것을 원한다고 생각하십니까?
Melioratus

@Melioratus, 그것은 약간 원시적입니다 (오류를 잘 처리하지 않고 파이썬 콘솔에서 여분의 출력을 추가합니다).하지만 아무것도 아닌 것보다 훨씬 낫습니다. 그리고 파이썬 콘솔은 매우 좋습니다. 답변으로 제출해야합니다.
user2699

@Tobias, 고마워요. 제가 찾는 것은 일종의 일탈이 아닙니다.
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. 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.