Ocaml компилируется.Вы, кажется, привыкли к интерпретируемым языкам, где система времени выполнения имеет доступ к полному исходному коду программы.В случае скомпилированной программы система времени выполнения не имеет большого доступа к информации.Например, имена переменных исчезают во время компиляции, и ничто не будет отслеживать аргументы, передаваемые каждой функции, за исключением случаев, когда это необходимо для нормального выполнения программы (выполнение этого потребовало бы больших накладных расходов).
Если вы компилируетеваша программа с символами отладки (передайте компилятору опцию -g
), вы можете получить трассировку стека, если ваша программа умирает от необработанного исключения.Вы получите имена функций и некоторые местоположения программ, но не детальное содержимое памяти.Компиляция с отладочной информацией приводит к увеличению размера исполняемого файла, но не меняет производительность во время выполнения.Вам нужно установить переменную окружения OCAMLRUNPARAM
, чтобы при запуске программы она содержала b
.
ocamlc -g -o foo foo.ml
export OCAMLRUNPARAM=b
./foo
Если вам нужна дополнительная информация, вам нужно запустить вашу программу в отладчике.