2016-12-08 6 views
0

매일 개발을 위해 emacs + 사이다를 사용하는 것은 정말 편합니다. 텍스트 편집기에서 구성한 모든 것들이 작업에 이상적입니다.REPL에서 콘솔 앱을 디버깅하는 방법은 무엇입니까?

여가 시간에 작업중인 현재 프로젝트는 텍스트 편집기입니다. 이미 C++에서 구현했는데 gdb을 사용하여을 디버깅했습니다. 이맥스에서. 그것을 실행하기 위해 버퍼에 set new-console onrun을 입력했습니다. 그러면 모든 I/O를 처리 할 새 콘솔 이 나타납니다.

이제 Clojure에서 다시 구현하려고합니다. 지금까지 가장 큰 우려 사항 중 하나는 디버깅입니다. 나는 그것이 gdb과 함께 사용 된 것과 비슷한 나쁜 것이 아닐 것이라고 생각합니다.

을 버퍼링하지 않고 키보드를 읽는 의 경우, 나는 JLine을 사용하고 있습니다. 즉, read-line은 원하는 결과를 제공하지 않습니다.

응용 프로그램의이 종류를 디버깅 할 수있는 합리적인 방법은 무엇입니까 (콘솔에서 I/O의 많은)?

emacs/cider에서 우선적으로 수행하는 방법은 무엇입니까?

필자는이 문제가 있다면 lein을 사용하고 있습니다.


P.S. : 여기에 similar question이 있습니다. 더 광범위한 "의도"가 있습니다. 나는 그것이 가치가 있다고 생각합니다.

답변

2

CIDER에는 현재 debugger이 우수합니다. 이 내용은 screenshot을 참조하십시오.

가장 쉬운 방법은 nREPL 및 CIDER가 종속 파일로 포함 된 lein/boot 빌드 프로필을 만들고 embedded CIDER instance을 사용하는 것입니다. 이렇게하면 버퍼되지 않은 키보드 I/O를 얻을 수있는 터미널에서 앱을 "독립 실행 형"으로 실행할 수 있으며 디버거 및 코드로드를 최대한 활용하려면 M-x cider-connect을 통해 내장 nREPL + CIDER 인스턴스에 연결할 수 있습니다 평상시처럼

+0

네, 거의 매일 사용합니다. 여기서 문제는 I/O를 처리하는 것입니다. 이런 종류의 콘솔 앱의 경우'read-line'만으로는 충분하지 않습니다. 키는 버퍼링되어 있지 않으면 읽어 낼 필요가 있습니다. 나는 현재이 목적을 위해'JLine'을 사용하고 있습니다. 나는이 세부 사항을 질문에 추가 할 것이다. 하지만 대답 해줘서 고마워! –

+0

@ TiagoDall'Oca Arrdem 님이 위의 답변을 업데이트했습니다. –

+0

나는 이것을 해결할 것이다. 문제가 해결되면 답변을 업데이트하겠습니다. Btw 감사합니다! –