考慮到與OCaml的編譯的二進制文件編譯的,有沒有辦法找出是否已經編有分析信息(通過使用ocamlopt -p
ocamlcp
/ocamloptp
,或gprof
特異性數據)?OCaml的二進制與分析信息
3
A
回答
2
如果你運行一個異形字節碼文件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
看來很可能這個w在支持nm
的每個系統上都生病了。
0
注意:老譜標誌(ocamlopt -p
)產生gprof
特定信息,且不會產生camlProfiling
的符號,傑弗裏的答案。但使用ocamloptp
,他的解決方案工作。
如果你需要「舊」方法,如this website指出的,有些可靠的方式來確定是否二進制已編譯gprof
支持是檢查符號mcount
的存在:
nm <native binary> | grep mcount
只有-p
編譯的程序應該包含mcount
符號:
U [email protected]@GLIBC_2.2.5
否則,該方案尚未使用-p
˚F編譯落後。
相關問題
- 1. 信息與OCaml的隱藏記錄
- 2. 更新二進制文件信息
- 3. Android數據消息(二進制短信)
- 4. 在OCaml中打印二進制樹
- 5. 包括OCaml二進制文件
- 6. 基於二進制格式文檔訪問特定的二進制信息
- 7. Ocaml中從十進制到二進制的轉換
- 8. 二進制日誌文件分析
- 9. 二進制分析研究工具
- 10. Rpart改進得分與信息增益
- 11. Beautifulsoup分析 - 詳細信息
- 12. 使用二進制信號
- 13. ocaml分析器和詞法分析器
- 14. Haskell二進制解析
- 15. 如何分析與斜線的URL在用戶信息部分
- 16. OCaml:繪製二叉樹
- 17. 與二進制XML
- 18. 二叉樹vs二進制搜索樹大哦分析
- 19. 在構建的二進制文件中更改版本信息
- 20. 在.Net中讀取文本和二進制信息的文件
- 21. 更多關於二進制搜索的信息
- 22. MySQL的「二進制」與「字符的字符集的二進制」
- 23. 推進到第二個視圖控制器與mapkit信息按鈕
- 24. 如何轉換OCaml中十六進制,十進制,十進制和二進制數之間的數字?
- 25. 關於查詢分析器的信息
- 26. 寫入二進制在FORTRAN沒有額外信息
- 27. 二進制文件和兼容性標準信息 - C++/JAVA
- 28. 上傳多個二進制信息作爲在iOS
- 29. Log4j在文件開頭記錄了一些二進制信息
- 30. 使用C++讀取和寫入二進制信息
謝謝!確實適用於字節碼版本。任何想法的本地二進制文件? – anol 2012-08-08 19:16:12
剛纔我正在研究它,但是我沒有'ocamloptp'(OCaml 3.12.1)。也許它在OCaml 4中是新的? – 2012-08-08 19:19:18
我剛剛檢查過,是的,它是一個新工具,雖然文檔沒有說清楚它(如果您使用「增強的文檔」來提供不同版本之間的差異,它變得很清楚:http://www.askra。德/軟件/ ocaml的-DOC/4.00 /)。現在,我會嘗試使用「ocamlopt -p」。 – anol 2012-08-08 19:22:30