我正在使用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
上添加断点,以及如何确定此符号的定义模块是什么?
答案 0 :(得分:3)
请忽略下划线。 b WebThreadLockFromAnyThread在lldb和gdb中都适用于我。现在,这是Xcode 4.6,所以如果您坚持使用旧版本,我认为该版本可能存在4.6版本中没有的问题。
答案 1 :(得分:0)
您可以尝试使用nm命令或类转储工具来定位模块。
答案 2 :(得分:0)
很可能没有你需要的符号,因为默认情况下xcode会产生"发布"构建如果我是正确的剥离符号使exec文件小得多。我不知道目前是怎么做的,但你需要找到切换到" debug"的选项。构建,这将保证所有这些可爱的符号等待您的分析。