[英]How to interpret GDB backtrace of an OCaml program?
我正在嘗試在GDB中閱讀我的OCaml程序的回溯。 輸出如下所示:
(gdb) bt
#0 0x0000000100535ac6 in .L207 ()
#1 0x0000000100535acb in .L207 ()
#2 0x0000000100535acb in .L207 ()
...
我怎樣才能解釋這種輸出?
編輯:
./configure --enable-debug
啟用了調試信息(我正在使用oasis)。 編輯2:Linux版本的GDB輸出似乎是正確的。 有誰知道為什么OS X和Linux版本之間存在這樣的差異?
你用-g編譯了嗎? 我通常會#3 0x0000000000401f49 in caml_program ()
獲得類似#3 0x0000000000401f49 in caml_program ()
。 還有export OCAMLRUNPARAM=b
,在程序崩潰時給出export OCAMLRUNPARAM=b
。
(您可能希望發布代碼片段和編譯命令。)
您也可以找到http://www.ocamlpro.com/blog/2012/08/20/ocamlpro-and-4.00.0.html和http://oud.ocaml.org/2012/slides/oud2012-paper5- slide.pdf很方便。
檢查使用的C編譯器和匯編器。 Mac OS可能使用clang
,它可能無法為gdb
生成完整的調試信息。 在那種情況下,使用lldb
可能會更有成效。
您是否考慮過使用ocamldebug
,或者您是否必須在機器端進行調試?
如果你想了解你的代碼在CPU / Register / Assembly / Bitfiddling-witchcraft上做了什么,那么閱讀Jane Street的博客文章寫下性能敏感的ocaml代碼可能會提供更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.