Profiling 使用评测信息编译的OCaml二进制文件

Profiling 使用评测信息编译的OCaml二进制文件,profiling,ocaml,Profiling,Ocaml,给定一个用OCaml编译的二进制文件,有没有办法确定它是否是用评测信息编译的(使用ocamlcp/ocamloptp,或者通过ocamlopt-p使用gprof特定数据编译的)?如果在评测过的字节码文件上运行ocamlobjinfo,它将分析显示为导入的接口之一: $ ocamlcp -c my.ml $ ocamlobjinfo my.cmo File my.cmo Unit name: My Interfaces imported: 720848e0b508273805ef3

给定一个用OCaml编译的二进制文件,有没有办法确定它是否是用评测信息编译的(使用
ocamlcp
/
ocamloptp
,或者通过
ocamlopt-p
使用
gprof
特定数据编译的)?

如果在评测过的字节码文件上运行
ocamlobjinfo
,它将分析显示为导入的接口之一:

$ ocamlcp -c my.ml
$ ocamlobjinfo my.cmo
File my.cmo
Unit name: My
Interfaces imported:
        720848e0b508273805ef38d884a57618    Array
        d7e1aaf95ba3578d33efe347aefa6c49    My
        db723a1798b122e08919a2bfed062514    Pervasives
        6a6248bae49664a0bb530dd3f0c15b79    Profiling
Uses unsafe features: no
$ 
更新

在我的系统(OS X)上,配置文件的本机可执行文件包含
camlProfiling
的定义和相关符号:

$ ocamlopt -o my my.ml
$ nm my | grep camlProfiling
$ ocamloptp -o my my.ml
$ nm my | grep camlProfiling
000000010003e240 D _camlProfiling
000000010003e2e0 d _camlProfiling__1
000000010003e300 d _camlProfiling__2
000000010003e318 d _camlProfiling__3
000000010003e268 d _camlProfiling__4
000000010003e280 d _camlProfiling__5
000000010003e2a0 d _camlProfiling__6
000000010003e2c0 d _camlProfiling__7
0000000100003760 T _camlProfiling__code_begin
0000000100003ac7 T _camlProfiling__code_end
000000010003e238 D _camlProfiling__data_begin
000000010003e328 D _camlProfiling__data_end
00000001000038d0 T _camlProfiling__dump_counters_1014
0000000100003a40 T _camlProfiling__entry
000000010003e32c D _camlProfiling__frametable
0000000100003770 T _camlProfiling__fun_1046
0000000100003800 T _camlProfiling__fun_1048
0000000100003890 T _camlProfiling__incr_1010

这似乎很可能适用于支持
nm

注意:
ocamlopt-p
)的每个系统:旧的分析标志(
ocamlopt-p
)会产生
gprof
特定信息,而不会产生杰弗里回答中的
camlProfiling
符号。但是使用
ocamloptp
,他的解决方案是有效的

如中所述,如果您需要“旧”方法,确定二进制文件是否已使用
gprof
支持编译的可靠方法是检查是否存在符号
mcount

nm <native binary> | grep mcount

否则,程序未使用
-p
标志编译。

谢谢!事实上,它适用于字节码版本。有关于本机二进制文件的想法吗?我刚才正在研究,但我没有
ocamloptp
(ocaml3.12.1)。它在OCAML4中可能是新的吗?我刚刚检查过,是的,它是一个新的工具,尽管文档没有很清楚地说明它(如果您使用“增强文档”,它提供了不同版本之间的差异,它就会变得清晰:)。现在,我将使用“ocamlopt-p”尝试一些东西。当我有空的时候,我将对此进行研究,很抱歉没有这么大的帮助。我正在深入研究如何将OCAML4移植到iOS——需要处理的问题很多。如果您能确认是否
nm…|grepmcount
适用于您(如我的回答中所述),我愿意接受一个包含字节码和本机二进制文件解决方案的回答。
U mcount@@GLIBC_2.2.5