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 "{\n age = 28;\n key1 = value1;\n name = rongfzh;\n}"

打印对象的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]

时间: 2024-10-23 14:27:41

Xcode如何查看内存中的数据的相关文章

REDIS 勿删除rdb文件如何从内存中恢复数据

redis的数据是在内存中的,如果redis重启或间隔一定时间redis会把内存保存在硬盘上的一个.rdb文件中做持久化,以前刚刚开始用redis的时候,不小心把.rdb文件给误删除了,但你只要正常save或者重启redis,rdb文件会自动生成. 但随着线上业务增加,redis的数据会越来越大,在用这种方法会出现错误,不能把内存中的数据保存到rdb文件中,这时需要只要做以下几步,就可以恢复rdb文件了: 进入到redis端口,info查看配置信息 进入redis端口 执行 config set

简单了解:在内存中的数据

内存原理 开启电源,启动BIOS,CPU工作,调用内存,内存跟硬盘索要资源 当你点击一个文件的时候数据经过数据总线传达到CPU,CPU发送指令到内存,内存那里会跟硬盘沟通,问他有没有这个东西,他说有,你就会看到这个文件夹里面是什么东西. (Xee:RAM 是随机存取存储器,它的特点是易挥发性,即掉电失.--妈蛋,难怪一断电,我的东西没保存,就找不到了-- 既然内存是用来存放当前正在使用的(即执行中)的数据和程序,那么它是怎么工作的呢?我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态

ffmpeg 从内存中读取数据

http://blog.csdn.net/leixiaohua1020/article/details/12980423 ffmpeg一般情况下支持打开一个本地文件,例如"C:\test.avi" 或者是一个流媒体协议的URL,例如"rtmp://222.31.64.208/vod/test.flv" 其打开文件的函数是avformat_open_input(),直接将文件路径或者流媒体URL的字符串传递给该函数就可以了. 但其是否支持从内存中读取数据呢?这个问题困

Android---35---openFileInput、openFileOutput获取手机内存中的数据

openFileOutput和openFileInput 获取手机内存中的文件而不是SD卡中的. Context提供了两个方法来打开本应用程序的数据文件夹里的文件I/O流. openFIleInput(String name):name文件对应的输入流 openFileOutput(String name,int mode):name文件对应的输出流 其中输出流中的第二个参数表示打开文件的模式,也可以称作权限: MODE_PRIVATE:该文件只能被当前程序读写 MODE_APPEND:以追加的

内存中的数据对齐

数据对齐,是指数据所在的内存地址必须是该数据长度的整数倍.DWORD数据的内存起始地址能被4除尽,WORD数据的内存起始地址能被2除尽.x86 CPU能直接访问对齐的数据,当它试图访问一个未对齐的数据时,会在内部进行一系列的调整.这些调整对于程序来说是透明的,但是会降低运行速度,所以编译器在编译程序时会尽量保证数据对齐.同样一段代码,我们来看看用VC.Dev C++和LCC这3个不同的编译器编译出来的程序的执行结果: 这是用VC编译后的执行结果: 变量在内存中的顺序:b(1字节)-a(4字节)-

第二十一章、使用查询表达式来查询内存中的数据

什么是语言集成查询(LINQ) 对从应用程序代码中查询数据的机制进行了“抽象”.这个功能称为“语言集成查询”(Language Integrated Query). LINQ的设计者大量借鉴了关系数据库管理系统(例如Microsoft SQL Server)的处理方式,将“数据库查询语句”与“数据在数据库中的内部格式”分隔开.LINQ的语法和语义和SQL很像,具有许多相同的优势.要查询的数据的内部结构发生改变后,不必修改查询代码.注意,虽然LINQ和SQL看起来很像,但LINQ更加灵活,而且能处

查看k8s中etcd数据

#查看etcd pod kubectl get pod -n kube-system | grep etcd #进入etcd pod kubectl exec -it -n kube-system etcd-node1.com sh #设置etcdctl 使用的版本,k8s中使用v3版本export ETCDCTL_API=3 #查询etcd中所有的key etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernete

王立平--查看SQLite中的数据信息

Eclipse菜单Window - Open Perspective - DDMS进入DDMS视图. 然后File Explorer View中依次展开路径/data/data/package_name/databases/. 将当中的db文件pull from device保存到电脑上, 再使用navicat.SQLiteSpy或其它软件打开查看 SQLiteSpy查看过程: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMzQyNTUyNw

在一段内存中查找数据

#include <stdio.h> char code[] = { 0x64,0x10,0x00,0x00,0x20,0x64,0x00,0x01,0x00,0x80, 0x01,0x90,0x08,0x07,0x20,0x64,0xa0,0x00,0x03,0x80, 0x01,0x90,0x08,0x07,0x20,0x64,0x00,0x08,0x00,0x03, 0x01,0x07,0x20,0x64,0x64,0x00,0x00,0x00,0x03,0x80, 0x01,0x90,