2015-12-25 26 views
1

我的程序使用了所有可用內存,所以我想檢查哪些函數和摘要會破壞我的項目。我決定用Memprof,所以我安裝了編譯器和編譯的代碼才能使用命令使用Memprof進行OCaml內存分析 - TypeRex Utility

ocamlfind ocamlopt -package xml-light unix.cmxa str.cmxa -c -g NKJPxmlbasics.ml NKJP.mli NKJP.ml test.ml 

,然後運行在教程

ocp-memprof --exec ./test 

建議,但有錯誤而不是結果:

Error: no memory profiling information found. Possible causes: - the application was not compiled with memory profiling support; - the application exited before any major garbage collection was performed.

我甚至管理一次,使其工作,但我不知道它是如何發生的 http://memprof.typerex.org/users/97beffbaec332eb7b2a048b94f7a38cf/2015-12-15_17-33-50_ab17218e800fe0a68fc2cfa54c13bfa6_16194/index.html

在這種情況下,有什麼方法可以正確使用這個工具嗎?我錯過了什麼?

+0

什麼'which ocamlopt'返回?你確定你的可執行文件的名字是'test'嗎?在「內存不足」崩潰之前,您的應用程序運行了很長時間? –

+0

我的應用程序沒有崩潰,但在設法最終識別內存之前需要大約3 GB的空間。我發現在一個遞歸函數中拼寫錯誤,導致內存泄漏。 – SzymonPajzert

回答

1

ocamlfind ... -c ...不會生成任何可執行文件。因此,您運行的./test可能是由以前的命令生成的,可能沒有memprof開關。