2008-09-28 6 views

답변

34

컴파일은 = B

+1

원시 코드의 경우 OCaml v3.10 이상에서만 작동합니다. –

9

일부 Printexc 기능을 프로그래밍 방식으로이 작업을 수행 할 수 있습니다.

+2

특히'Printexc.record_backtrace true'입니다. –

2

유닉스에서 예외에 대한 흔적 만 얻을 수있는 것처럼 보이기 때문에 두 번째 프로세스에서 예외를 포크하고 throw 할 수 있습니다. 주요 프로세스가 계속 이런 식으로 :

export OCAMLRUNPARAM=b 
# compile with -g 

flush_all(); let r = Unix.fork() in if r == 0 then raise Exit 
0

당신이 Ocamlbuild 사용하는 대신 직접 컴파일러를 호출하는 경우 debug 태그를 사용할 수 있습니다. manual에서 : OCamlbuild와

, 당신은 단순히 프로그램의 목표에 디버그 태그를 추가 할 수 있으며, -g 플래그를 삽입하거나하지 않을 때 분류됩니다. 당신이 패키지 bar있는 파일 foo.ml을 구축하는 경우

예를 들어, 다음 _tags 파일은 라인이있을 것이다 :

<foo.ml>: package(bar), debug 

바이트 코드/원시 파일을 구축하는 동안이 적절한 -g 플래그를 삽입합니다. 그러나 다른 대답에서 언급 한대로 export OCAMLRUNPARAM=b을 사용하여 환경 변수를 설정해야합니다.