Xcodedebugging器有时不显示variables值?

这经常发生在我身上。 例如,现在我有一个方法中的断点停止debugging器。 。 。 并没有显示任何variables值。 其他时候,它显示一些,但不是其他时间。

谁能解释一下?

最常见的原因是,您正在尝试debugging使用优化启用和/或没有debugging符号编译的代码。 通常情况下,这是因为您试图debuggingRelease版本而不是Debug版本,但如果您对Debug版本设置进行了不适当的更改,也可能会发生在Debug版本中。

另一个不太常见的可能性是你已经清理了堆栈。

我有这个问题(使用Swift),我花了几年爬过我的git提交find问题的开始。

xcode调试变量无法正常工作或显示


对我来说,我使用的是Facebook Tweaks库,但是我(不必要地)从我的project-bridging-header.h文件中导入它。

一旦我摆脱它,我得到了我的debugging回来。

例如,在我的桥头,我有:

 #ifndef PROJECT_Bridging_Header_h #define PROJECT_Bridging_Header_h // Facebook Tweaks #import "FBTweak.h" #import "FBTweakStore.h" #import "FBTweakCategory.h" #import "FBTweakCollection.h" #import "FBTweakViewController.h" #import "FBTweakShakeWindow.h" #endif 

我删除了所有的导入,并像往常一样导入它在我的AppDelegate import Tweaks

例如:

 #ifndef PROJECT_Bridging_Header_h #define PROJECT_Bridging_Header_h // Removed Facebook Tweaks #endif 

并在我的AppDelegate.swift

 import Tweaks 

这固定了我所有的debugging问题,一切正常,我也可以使用Facebook的调整。

注意:我不认为这是Facebook调整本身的问题,您可能有其他一些库引起相同的问题。 这个想法是从你的bridging-header逐一删除的东西,看看你是否可以缩小这个问题。

我想我在某处读到,如果一个图书馆在幕后造成了很多问题,这可能会阻止你的debugging器工作。

如果这没有帮助,请尝试爬行你的git提交,看看在哪个阶段debugging停止。

SO上的其他类似问题:

Xcodedebugging不显示值

安装CocoaPods Podfile后,Xcodedebugging器不显示variables信息

如果你有类似的问题,希望这有助于! 👍

可能的解决scheme是将当前目标debuggingscheme的优化级别设置为无。

项目 – >目标 – >生成设置 – >优化级别 – >debugging(或任何适合您的项目) – >无

资源:

https://stackoverflow.com/a/14948486/3590753

我有类似的问题使用LLDB。 切换回GDB似乎解决它。 显然这不是解决问题的方法,但它是一个解决方法

你可以通过编写下面的命令来获取控制台中任何variables的值:

 po name_of_an_objectCVar 

要么

 print name_of_a_cVar 

如果您的断点在“设置了评估选项后自动继续”,那么它将不写入variables视图 – FYI

我知道这是旧的,但我也遇到了同样的问题。 我看不到任何对象的摘要,只是types和一些地址码。 在经历了4个小时的与编译器,debugging器和其他解决scheme的挣扎后,我偶然发现在debugging器中发现了这个选项。 “显示摘要”。 只要点击它,一切都得到修复,现在我看到所有的variables摘要!

在这里输入图像说明

有使用Xcode 6.4在设备上运行应用程序相同的问题。 在模拟器上运行将显示debuggingvariables面板上的所有variables。

有一种情况我已经看到Xcode无法应对返回值优化(RVO) – 如果编译器决定将RVO应用于variables,那么它可能不会出现在variables列表中。 你可以用g ++和clang来禁用这个编译器标志-fno-elide-constructors

另请参见了解有关c ++ 11的消除规则

如果使用Objective-C 2.0的@property特性,debugging器将不会显示这些variables,除非它们在Class接口中由显式的ivars支持。 据我所知,这将被固定在Xcode 4中。

临时的解决办法,当它发生在我身上:右键单击属性跳转到定义(你可以手动做,并滚动到文件顶部的@synthesize)

现在,如果这条线是这样的:

@synthesize myObject = _myObject;

在“_myObjects”上设置鼠标光标。 那对我有用的东西..当我有问题时。

我想出了为什么它不能在XCode 4.6中工作 – 我的对象中的所有variablesself,都是在.m文件中声明的,而不是在.h中声明的。 当我将其中的一个移回到.h文件时,它显示在debugging器中。 听起来像XCode的一个bug,它不能“看到”在实现文件中声明的variables。

对我来说,它工作更改显示variables面板的内容到Local Variables ,然后回到Auto

这个解决scheme在XCode 6.3.2 Swifttypes的项目上工作。

您需要在构build设置中禁用两种构build优化。 默认情况下,debugging版本的“swift编译器 – 代码生成”优化级别设置为快速。 您需要将其设置为无。 还要检查“apple llvm 7.1 – 代码生成”优化设置为无debugging版本。 最后,检查您是在构build设置的“架构”部分构builddebugging版本。

希望这可以帮助。

我一直在困扰这个问题,终于find了解决办法。 我认为很多原因可能会导致这个错误,但在我这里是解决scheme。 当你处于断点位置时,检查包含的类。 我包括使用双引号包含使用包含path的文件。

 #include "MyClass.h" 

代替

 #include <MyPorject/MyClasses/MyClass.h> 

所以,如果你有这个问题,请尝试再次检查你的包含和导入。 我知道这似乎很奇怪,但为我工作,我已经能够通过把双引号包括重现它。

我的问题是我已经启用了地址清理程序。 禁用清洁剂解决了我在XCode 8.2.1中的问题

对于使用吊舱的Swift mix OC Project

通过删除无用的头文件(通过pod导入框架)来修复它xx-Bridging-Header.h

例如。 在过去,我用#import "GCDAsyncSocket.h"导入头文件,这是我在podfile中添加的

platform:ios, '8.0' use_frameworks! target "roocontrollerphone" do pod 'CocoaAsyncSocket' end

只需在xx-Bridging-Header.h文件中删除它即可

debugging器显示看似错误的值的一个可能原因是variablestypes是Any?

例如

 var a: Any? = 12 var b: Int? = a as? Int // b=13483920750 var c: Int = a as? Int ?? 0 // c=1 

在上面的例子中, b保持正确的值1即使它不是这样显示的。