zoukankan      html  css  js  c++  java
  • Xcode如何查看内存中的数据

    在  debug 模式下如何在断点处,查看字符指针变量内存中的值,像vs2008的调试工具一样的内存查看器,现在只能查看第一个内存中的值可以在输出窗口采用gdb命令:x /nfu <addr>

    n表示要显示的内存单元的个数

    -----------------------------------------

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

    会显示self指针地址内容,16个字节,16进制

    -------------------------------------------

    -------------------------------------------

    用 Xcode Debug 时可以用以下方法查看全局变量:

    Objective-C 直接在console(控制台-gdb)输入 po+变量名

    开发程序时,加了断点进行debug但发现不知到怎样查看变量的内容。用惯eclipse了。看到控制台上显示GDB,就查了下GDB的命令,方便以后使用
    clear FILENAME:NUM        删除断点。
     
    continue         继续执行直到下一个断点,也可以写做cont
    help NAME    帮助
    break NUM    在某行设置断点
    kill         终止被调试的程序
    print-object 显示对象的内容,也可以写做po
    whatis       查看对象的数据类型
    next         向前执行一行代码
    step         进入一个方法
    finish       跳出一个方法
    以上命令可以在xcode的控制台进行输入
     
    在GDB窗口中使用po就可以查看变量.(po = print object) 
    1)查看String 或其它变量。
    po 变量名
    2)查看某个Property。比如要查看item变量的name属性。
    po [item name]    注意,po item.name是不工作的。
    3)查看数组
    po [myArray objectAtIndex:index]

    /******************************************************我是分割线***********************************************/

    在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 <UILabel: 0x6a8bdd0; frame = (20 40; 250 60); text = 'rongfzh'; clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x6a8be90>>

    label的信息也打印出来了。

    3、print命令

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

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

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

    (lldb) print (int)[label retainCount]

    (int) $2 = 1

     

    /*******************************************************************************************************************/

     

    对于IPhone开发/XCode的初学者,如何在调试时查看变量的值是很头痛的事情。因为Xcode的expression 经常无法正确显示变量的值。但是强大的GDB可以很方便的帮我们查看变量的值。
     
    当执行到某断点时,在GDB窗口中使用po就可以查看变量.(po = print object) 

    1)查看String 或其它变量。

    po 变量名
    2)查看某个Property。比如要查看item变量的name属性。
    po [item name]    注意,po item.name是不工作的。
    3)查看数组
    po [myArray objectAtIndex:index]
  • 相关阅读:
    Spark Streaming源码解读之Receiver生成全生命周期彻底研究和思考
    linux 修改时间时区,修改语言
    远程链接mysql error 2003
    Android NDK r10c 编译boost 1.55 (使用Cygwin)
    linux上cocos2dx Android打包环境
    linux上cocos2dx 环境配置
    linux, windows编译安装 boost库 (boost 1.56)
    编译安装 gcc 4.8.3
    vim配置添加python
    mvn设置
  • 原文地址:https://www.cnblogs.com/Peak-Banish/p/4031691.html
Copyright © 2011-2022 走看看