簡體   English   中英

如何解釋OCaml程序的GDB回溯?

[英]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)。
  • 我在OS X 10.10上使用GDB 7.9.1
  • 我正在使用OCaml 4.02.2

編輯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.htmlhttp://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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM