如何知道哪个库使用给定的符号?

时间:2015-10-08 09:39:51

标签: ocaml

Js_of_ocaml告诉我,我的字节码在某处使用caml_blit_string_to_bigstring。有没有办法找到哪个库引入了这种依赖?

2 个答案:

答案 0 :(得分:2)

我设法使用ocamlobjinfo将caml_blit_string_to_bigstring发现到cstruct.cma中。

使用opam list --depends-on=...,我发现Hex使用Cstruct,Ezjsonm使用Hex而Cow使用Ezjsonm。

现在我不确定是否是我使用的Ezjsonm代码会触发崩溃。

修改 我已经固定了一个不依赖于cstruct的自定义版本的Hex。问题现在已经消失。

答案 1 :(得分:1)

你可以试试这个:

cd $(opam config var lib)
ocamlobjinfo */*.cmo */*.cmx */*.cma */.cmxa | less 

然后搜索符号,一旦发现它向上移动,找出符号出现的File行。

这也可以在sub-sub +文件夹中,但我是一个糟糕的shell脚本程序员,所以我会让你弄清楚正确的调用。