Pergunta

A linguagem Caml Objetivo só irá produzir rastreamentos de pilha, se você pedir para eles apenas para a direita - o que são os requisitos para tanto bytecode e código nativo

Foi útil?

Solução

compilação com -g e conjunto ambiente variável OCAMLRUNPARAM = b

Outras dicas

Alguns Printexc funções deixá-lo fazer isso programaticamente .

Porque parece que você só pode obter traços para exceções no UNIX você pode garfo e lançam a exceção no segundo processo. Desta forma, o processo principal pode continuar:

export OCAMLRUNPARAM=b
# compile with -g

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

Se você estiver usando Ocamlbuild em vez de chamar o compilador diretamente, você pode usar a tag debug. Do Manual :

Com OCamlbuild, você pode simplesmente adicionar a tag de depuração para as metas do seu programa, e ele vai resolver quando inserir o flag -g ou não.

Por exemplo, se você está construindo um foo.ml arquivo com bar pacote, então seu arquivo _tags terá uma linha:

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

Isto irá inserir as bandeiras -g apropriadas enquanto a construção de arquivos bytecode / nativos. No entanto, você ainda precisa definir a variável de ambiente usando export OCAMLRUNPARAM=b como mencionado em outras respostas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top