当试图退出C++ 11 std lib时,调试器会更深入

phi*_*red 10 c++ debugging llvm xcode4 c++11

我在Xcode 4.5中使用(Apple)LLVM 4.1(但我在之前的测试版中看到了相同的内容).我将它定位到C++ 11并使用libc ++(新的,支持C++ 11,std库的LLVM版本).

在调试版本中,如果我尝试跳过调用std库函数的代码(例如std :: vector构造函数),调试器会在std lib实现中停止,如果我尝试跳出它更深入的步骤!在我回到我自己的代码之前,可能需要几次(有时10次或更多次)的步骤(而且我从来没有想过要介入这个地方).

似乎总是有一个_LIBCPP_DEBUG宏,以及_LIBCPP_INLINE_VISIBILITY - 但这些似乎无处不在,所以我不确定它是一个相关性.但是,它似乎与内联的工作方式有关.

我还没有找到任何其他有这个问题的例子 - 但是,对于我来说,它已经持续了几个测试版 - 进入发布 - 并通过完全重新安装操作系统.

有没有人见过这个? - 但更好的是还知道发生了什么?

Jas*_*nda 7

Xcode 4.5中的lldb不处理内联函数的步进.libc ++标准库有许多总是内联的函数,即使在-O0构建时也是如此,这使得这成为一个问题.看起来Jim Ingham大约一个月前就开始工作,例如在接下来的一周或两周内看到第一个补丁http://llvm.org/viewvc/llvm-project?view=rev&revision=163044和几个后续补丁,但当然那些还没有发布的lldb版本.您可以从公共站点http://lldb.llvm.org/(特别参见http://lldb.llvm.org/build.html)构建和使用命令行版本的lldb ,唯一棘手的一点是要记住遵循lldb/docs/code-signing.txt中的代码签名说明.