7

我正在使用 Xcode 3.2.3 和 iPhone SDK

所以我试图调试一个 UIView 子类,我在一个被覆盖的方法中遇到了一个断点,我在 GUI 或 gdb 中都看不到任何符号,只有全局变量和寄存器。

这就是我所看到的:

(gdb) po self
No symbol "self" in current context.

然而,当我在 UIViewController 子类中设置断点时,所有符号都在那里:

(gdb) po self
<MyViewController: 0x5c18ae0>
Current language:  auto; currently objective-c

我尝试过的一些事情:

  • 清理所有/重建
  • 重启 Xcode
  • 调试和发布之间的变化
  • 在项目设置中配置这些选项:
    • GCC_DEBUGGING_SYMBOLS = 全部
    • 符号 DEBUG_INFORMATION_FORMAT = DWARF, DWARF w/ dSYM 文件
    • BUILD_VARIANTS = 正常,调试
  • rm -rf /Developer通过咒骂它并输入root bash提示来威胁Xcode

请帮忙,我的手指因使用 NSLog 调试而流血

4

6 回答 6

4

我经常遇到这个错误。我的解决方法是在 gdb 控制台上键入 bt 命令,然后它会自动排序并开始识别当前上下文中的符号。

于 2010-06-25T22:35:16.420 回答
3

因此,从Debug更改为Release就成功了,我拥有了所有的调试符号。

我认为这只是 4.0 SDK 中的一个错误。

于 2010-06-20T23:07:00.520 回答
0

嗯,试图在 3.2.3 和 SDK4 Final 中重现这一点,但没有成功——能够按预期调试 UIView 子类。这是使用其中一个 beta 版本发生的吗?

于 2010-06-30T16:20:57.847 回答
0

在 gdb 中键入bt

如果您在任何地方看到self=<value 由于优化而暂时不可用>,那是因为 xcode 已设置为优化。

转到构建设置和类型优化

如果调试或发布的优化级别设置为最快,则会导致您的问题。

应该以最快的速度发布,以便您的代码在构建分发时运行良好。最好在 Scheme 中更改您的构建配置。

opt+单击运行按钮。在左侧单击 Run YourAppsName.app,然后单击 Info 并选择debug

于 2012-04-19T18:11:05.077 回答
0

发生在我身上,在非测试版上。我只是注意到它只在调用类定义的方法时发生,即(+)而不是(-)

我不介意没有“自我”指针,但它似乎也消除了调试器中的所有局部变量显示,这是错误的。

于 2010-07-30T18:55:10.637 回答
0

MTS 的方法对我有用。从调试更改为发布可修复此问题。多么奇怪。我可以反驳软件进化的理论,因为我在实例方法中遇到了错误。

于 2010-08-01T05:42:53.693 回答