如何在Xcode中的_WebThreadLockFromAnyThread上设置符号断点?

时间:2012-05-03 04:08:49

标签: iphone ios xcode uikit

我正在使用Xcode 4.3.2和lldb作为我的调试器。

我继承了一个项目,其中包含从辅助线程调用UIKit的代码,如这些日志消息所示:

  

2012-05-02 21:48:14.603 Appname Dev [77594:16e0f]无效   _WebThreadLockFromAnyThread(bool),0x8d5f810:从主线程或Web线程以外的线程获取Web锁。 UIKit的   不应该从辅助线程调用。

我已经清理了从辅助线程进行UIKit调用的大部分代码,但我偶尔会在日志中看到此消息。该应用程序没有崩溃,因此很难确定问题所在。

我想在_WebThreadLockFromAnyThread上设置断点,但是当我尝试使用以下方法设置符号断点时:

b _WebThreadLockFromAnyThread

调试器告诉我:

  

断点设置--name'_WebThreadLockFromAnyThread'断点   created:12:name ='_ WebThreadLockFromAnyThread',locations = 0   (待处理)警告:无法将断点解析为任何实际值   位置。

我也尝试使用断点导航器中的UI创建符号断点,但我不确定要为模块输入什么。当我将模块留空时,会创建断点,但当调试控制台中出现日志消息时它仍然没有断开。

有谁能告诉我如何在_WebThreadLockFromAnyThread上添加断点,以及如何确定此符号的定义模块是什么?

3 个答案:

答案 0 :(得分:3)

请忽略下划线。 b WebThreadLockFromAnyThread在lldb和gdb中都适用于我。现在,这是Xcode 4.6,所以如果您坚持使用旧版本,我认为该版本可能存在4.6版本中没有的问题。

答案 1 :(得分:0)

您可以尝试使用nm命令或类转储工具来定位模块。

答案 2 :(得分:0)

很可能没有你需要的符号,因为默认情况下xcode会产生"发布"构建如果我是正确的剥离符号使exec文件小得多。我不知道目前是怎么做的,但你需要找到切换到" debug"的选项。构建,这将保证所有这些可爱的符号等待您的分析。