我使用clang用调试符号编译了我的应用程序。当使用lldb附加到应用程序并插入例如__cxa_throw时,我看不到libc ++ abi.dylib的源代码。我做错了什么?
答案 0 :(得分:1)
您确实获得了STL的一些调试信息,因为很多STL代码都在头文件中,这些头文件被编译到您的应用程序中。但是你没有为实际编译成libc ++ abi.dylib的代码提供调试信息,因为Apple并没有为系统库分发dSYM。 __cxa_throw实际上是库中的一个函数。
作为一个单独的问题,因为大多数人实际上并不想进入STL代码,lldb有一个设置:
(lldb) set show target.process.thread.step-avoid-regexp
target.process.thread.step-avoid-regexp (regex) = ^[^ ]+ std::|^std::
这将导致人为地跨步STL中的代码。您可以通过将该值设置为""来撤消此操作。这将使您在步进时进入内联代码。