2013-02-25 5 views
1

처리되지 않은 예외가있는 OCaml 프로그램을 디버깅하는 것은 매우 쉽습니다. 프로그램이 실행을 멈추고 ocamldebug에서 실행하거나 OCAMLRUNPARAM 환경 변수를 b으로 설정하여 백 트레이스를 얻을 수 있기 때문입니다. 예외를 처리하기위한 이러한 역 추적을 얻을 수있는 방법이 있습니까?OCaml에서 처리 된 예외를 깨뜨릴 수 있습니까?

참고 :이 예외를 처리하지 않도록 프로그램을 수정하는 것은 물론 하나 개의 옵션이다. 그러나 가능한 경우 프로그램 수정을 피하고 싶습니다. gdbcatch 명령과 유사 뭔가 좋은 것입니다.

답변

2

예외는 예외 처리중인 현재 위치까지 상승 된 시점에서 스택을 나타내는 역 추적을 출력하는 함수 Printexc.print_backtrace있다. 이것은 전체 스택 역 추적을 인쇄하지는 않지만 도움이 될 수 있습니다.

나는 한 번 유닉스 계열 시스템에서 전체 스택 백 트레이스를 출력 Unix.fork를 사용하여 일부 해키 코드를 썼다. 내 대답은 printing stack traces입니다. (I 생산에이 코드를 사용하는 것이 좋습니다 않을 것입니다.)

관련 문제