2017-12-06 25 views
1

Ocaml 언어 및 Jbuilder 튜토리얼을 읽었습니다. 공식 튜토리얼에서는 ocamldebug를 실행하기 위해 ocamlc를 사용하여 one must compile Ocaml code using the '-g' flag을 표시합니다.Jbuilder로 Ocaml 코드의 디버그 빌드 만들기

Jbuilder 설명서에서 디버그 빌드에 대한 언급을 찾을 수 없습니다. 가까운 부분은 https://jbuilder.readthedocs.io/en/latest/jbuild.html#ocaml-flags입니다.

$ ocamldebug [REDACTED] 
    OCaml Debugger version 4.04.2 

(ocd) r 
Loading program... [REDACTED] is not a bytecode file. 

내가 뭔가 잘못하고 있는가 : 그러나, 나는 컴파일 플래그와 '-g'를 추가해도 ..

(executable 
((name [REDACTED]) 
    (public_name [REDACTED]) 
    (libraries ([REDACTED])) 
    (flags (:standard -w [email protected] 
        -safe-string 
        -linkall 
        -g)) 
    (modules ([REDACTED])))) 

.. 난 아직도 디버그 바이너리를 얻을하지 않는 것? 그렇지 않은 경우, jbuilder에서 디버그 빌드를 생성하는 권장 방법은 무엇입니까?

답변

2

ocamldebug은 바이트 코드 빌드에서만 작동합니다. 네이티브 코드를 생성하고 있습니다. 바이트 코드 빌드를 만들려면 prog.exe 대신 을 사용하여 jbuilder을 호출하면됩니다.

이것은 이전 버전이 아닐 수도 있습니다. 평범한 이전 버전 인 gdb을 사용하여 원시 프로그램을 디버깅 할 수도 있지만 런타임에 조금 익숙해야합니다.

+0

설명서를 읽은 후, 나는 jbuild 파일이 추가 : (모드 (바이트))이 후 , .bc 파일이 생성 및 ocamldebug이 작동 듯했다. 바이트 코드를 생성하는 올바른 방법인가요? 더 좋은 방법이 있습니까? – Vishakh

+1

'(modes (bytes))'는 기본적으로 빌드 된 것에 만 영향을 주지만 언제나'jbuild build prog.bc'를 실행할 수 있다고 생각합니다. –