如何知道哪个库使用给定的符号?
How to know which library uses a given symbol?
Js_of_ocaml 告诉我我的字节码在某处使用了 caml_blit_string_to_bigstring
。有没有办法找到哪个库引入了这个依赖?
我使用 ocamlobjinfo 成功地将 caml_blit_string_to_bigstring
发现 cstruct.cma。
使用opam list --depends-on=...
,我发现Hex使用Cstruct,Ezjsonm使用Hex,Cow使用Ezjsonm。
现在我不确定是否是我使用的 Ezjsonm 代码触发了崩溃。
编辑
我固定了一个不依赖于 cstruct 的自定义版本的 Hex。现在问题解决了。
你可以试试这个:
cd $(opam config var lib)
ocamlobjinfo */*.cmo */*.cmx */*.cma */.cmxa | less
然后搜索您的符号,一旦找到它,向上移动以找出符号出现的 File
行。
这也可能在 sub-sub+ 文件夹中,但我是一个糟糕的 shell 脚本程序员所以我会让你找出正确的调用。
Js_of_ocaml 告诉我我的字节码在某处使用了 caml_blit_string_to_bigstring
。有没有办法找到哪个库引入了这个依赖?
我使用 ocamlobjinfo 成功地将 caml_blit_string_to_bigstring
发现 cstruct.cma。
使用opam list --depends-on=...
,我发现Hex使用Cstruct,Ezjsonm使用Hex,Cow使用Ezjsonm。
现在我不确定是否是我使用的 Ezjsonm 代码触发了崩溃。
编辑 我固定了一个不依赖于 cstruct 的自定义版本的 Hex。现在问题解决了。
你可以试试这个:
cd $(opam config var lib)
ocamlobjinfo */*.cmo */*.cmx */*.cma */.cmxa | less
然后搜索您的符号,一旦找到它,向上移动以找出符号出现的 File
行。
这也可能在 sub-sub+ 文件夹中,但我是一个糟糕的 shell 脚本程序员所以我会让你找出正确的调用。