문제
객관적인 CAML 언어는 스택 트레이스를 제대로 요청하는 경우에만 스택 추적을 생성합니다. 바이트 코드 및 기본 코드 모두에 대한 요구 사항은 무엇입니까?
해결책
-G로 컴파일하고 환경 세트 변수 OCAMLRUNPARAM = B
다른 팁
약간 printexc 기능을 통해 프로그래밍 방식 으로이 작업을 수행 할 수 있습니다.
유닉스에 대한 예외 만 얻을 수있는 것처럼 보이기 때문에 두 번째 프로세스에서 포크하고 예외를 던질 수 있습니다. 이렇게하면 주요 프로세스가 계속 될 수 있습니다.
export OCAMLRUNPARAM=b
# compile with -g
flush_all(); let r = Unix.fork() in if r == 0 then raise Exit
컴파일러를 직접 호출하는 대신 OCAMLBUILD를 사용하는 경우 debug
꼬리표. 로부터 수동:
OcamlBuild를 사용하면 디버그 태그를 프로그램 대상에 추가하면 -G 플래그를 삽입 할 때를 정리할 수 있습니다.
예를 들어 파일을 작성하는 경우 foo.ml
패키지와 함께 bar
그럼 당신의 _tags
파일에는 줄이 있습니다.
<foo.ml>: package(bar), debug
이것은 적절한 것을 삽입합니다 -g
바이트 코드/기본 파일을 구축하는 동안 플래그. 그러나 여전히 환경 변수를 사용하여 설정해야합니다. export OCAMLRUNPARAM=b
다른 답변에서 언급했듯이.
제휴하지 않습니다 StackOverflow