热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Xcode的Debug中查看数据细节的方法

众所周知,在Xcode中的IDE环境中编译和调试程序十分方便,我们在某行代码中设置好断点,当程序执行到该处时,只需要将鼠标放到代码段中的字符串等变量名上面,Xcode就能显示出变量的内

众所周知,在Xcode中的IDE环境中编译和调试程序十分方便,我们在某行代码中设置好断点,当程序执行到该处时,只需要将鼠标放到代码段中的字符串等变量名上面,Xcode就能显示出变量的内容。但如果是一些稍微复杂的变量类型,诸如NSDictionary,还是无法看到字典里的全部字段的内容。如果用NSLog去自己写代码输出的话,又嫌有些麻烦。Google了一下,在伟大的StackOverFlow网站找到一个好方法。

       这个时候,我们可以开启Debuger,来追踪到具体的内容。在代码的断点处使用快捷键command+shift+Y,调出Debuger窗口,在左侧选择你的代码文件,右侧会列出该代码段的变量列表,选择你所需要追踪的数据,这里我找到了要查看的变量parameters,这是一个NSDictionary类型。点击右键,选择Print Description to Console。如下图所示:


找到需要查看的变量名

       然后打开Xcode的控制台(command+shift+R),就能看到详细的信息了。很简单吧,高手可以无视了,对于我这个Xcode菜鸟来说,真的很方便了。


数据显示在控制台了

       Xcode的调试器为用户提供了一个GDB的界面,GDB是GNU组织的开放源代码调试器。您可以在Xcode的图形界面里做任何事情;但是,如果您需要您可以在命令行里使用GDB的命令。   要在一个调试的任务里输入GDB命令行命令:         在工具栏里点击Console Drawer (控制台抽屉窗口)按钮打开控制台。  您可以在控制台里查看Xcode调试器发送给GDB的命令,或者您可以直接在控制台里输入GDB命令。在控制台窗口里点击然后在gdb提示符后面输入命令。       
Java代码  
  1. 命令                        解释  
  2. break NUM               在指定的行上设置断点。  
  3. bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。  
  4. clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。  
  5. continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而  
  6.                         导致停止运行时。  
  7. display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。  
  8. file FILE               装载指定的可执行文件进行调试。  
  9. help NAME               显示指定命令的帮助信息。  
  10. info break              显示当前断点清单,包括到达断点处的次数等。  
  11. info files              显示被调试文件的详细信息。  
  12. info func               显示所有的函数名称。  
  13. info local              显示当函数中的局部变量信息。  
  14. info prog               显示被调试程序的执行状态。  
  15. info var                显示所有的全局和静态变量名称。  
  16. kill                    终止正被调试的程序。  
  17. list                    显示源代码段。  
  18. make                    在不退出 gdb 的情况下运行 make 工具。  
  19. next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。  
  20. print EXPR              显示表达式 EXPR 的值。  
  21.   
  22. print-object            打印一个对象  
  23. print (int) name      打印一个类型  
  24. print-object [artist description]   调用一个函数  
  25. set artist = @"test"    设置变量值  
  26. whatis                      查看变理的数据类型  

       在Xcode中,Debug时,不能像eclipse ,或VS那些集成开发那样,能直接查看变量的值。那怎么在调试的时候查看XCode的变量呢?有一些方法的。

1、新建一个Single View App

      在viewDidLoad里添加些代码:
      - ( void )viewDidLoad
      {
            [super viewDidLoad]; 
            NSDictionary*dic = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"key1"@"28",@"age",@"rongfzh",@"name",nil];
             UILabel*label =[[UILabel alloc] init];
             label.frame= CGRectMake(20,40,250,60);
             label.text= [dic objectForKey:@"name"]; 
             [self.view addSubview:label];
      }
        在最后一行打上断点。
2、"po" : print object 命令 打印出对象

      Command+R调试运行,在 Debug Console 上lldb上输入

       po dic

       回车,就可以把字典内容打印出来,

      再打印label试试。

       (lldb)po label

          (UILabel *) $3 = 0x06a8bdd0 >

        label的信息也打印出来了。

3、print命令

       print (char*)[[dic description] cString]

         (char *) $4 = 0x06d79760 "{\n age = 28;\n key1 = value1;\n name = rongfzh;\n}"

       打印对象的retainCount,但对象被回收

        (lldb) print (int)[label retainCount]

        (int) $2 = 1


    GDB可以很方便的帮我们查看变量的值。
    当执行到某断点时,在GDB窗口中使用po就可以查看变量.(po = print object)
       1)查看String 或其它变量。
             po 变量名
        2)查看某个Property。比如要查看item变量的name属性。
             po [item name] 注意,po item.name是不工作的。
        3)查看数组
             po [myArray objectAtIndex:index]

如果需查看内存数据:可以在输出窗口采用gdb命令:x /nfu

n表示要显示的内存单元的个数
-----------------------------------------
f表示显示方式, 可取如下值:
x 按十六进制格式显示变量
d 按十进制格式显示变量
u 按十进制格式显示无符号整型
o 按八进制格式显示变量
t 按二进制格式显示变量
a 按十六进制格式显示变量
i 指令地址格式
c 按字符格式显示变量
f 按浮点数格式显示变量
-----------------------------------------
u表示一个地址单元的长度:
b表示单字节
h表示双字节
w表示四字节
g表示八字节
-------------------------------------------
例如x/16xb self
会显示self指针地址内容,16个字节,16进制


推荐阅读
  • iOS开发Debug和Release的理解
    2019独角兽企业重金招聘Python工程师标准参考:http:blog.csdn.netmad1989articledetails406580331&# ... [详细]
  • 在真实开发中,因为需求是不断变化的,说不定什么时候就需要往模型里添加新的字段,添加新的模型,甚至是大规模的重构; ... [详细]
  • vue使用
    关键词: ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文讨论了如何在不使用SearchBar display controller的情况下,单独使用SearchBar并捕获其textChange事件。作者介绍了实际状况,即左侧SliderMenu中的SearchBar需要在主页TableView中显示搜索结果。然后,作者提供了解决方案和步骤,帮助读者实现这一功能。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Google Play推出全新的应用内评价API,帮助开发者获取更多优质用户反馈。用户每天在Google Play上发表数百万条评论,这有助于开发者了解用户喜好和改进需求。开发者可以选择在适当的时间请求用户撰写评论,以获得全面而有用的反馈。全新应用内评价功能让用户无需返回应用详情页面即可发表评论,提升用户体验。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了iOS开发--漫谈内存管理相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
中哒瘋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有