Bri*_*ian 23 xcode objective-c
我正在运行Xcode,我想转出一个NSData*.有问题的变量是缓冲区.有没有办法通过UI或GDB调试器执行此操作?

编辑
我把笔记移到答案中了.
小智 35
没人能正确回答这个问题.2年后,我认为是时候了:)
假设你的代码中有
NSData* myData;
Run Code Online (Sandbox Code Playgroud)
然后在lldb中输入
me read `[myData bytes]` -c`[myData length]`
Run Code Online (Sandbox Code Playgroud)
如果转储的格式不符合您的喜好,您可以添加'-t'
me read `[myData bytes]` -c`[myData length]` -t int
Run Code Online (Sandbox Code Playgroud)
有关更多帮助类型
help me read
Run Code Online (Sandbox Code Playgroud)
在lldb
小智 22
从Xcode 5(lldb),您可以使用以下内容:
po (NSString *)[[NSString alloc] initWithData:buffer encoding:4]
Run Code Online (Sandbox Code Playgroud)
请注意,这假设您的NSData实例已编码NSUTF8StringEncoding,但您可以在标题或文档中查找其他值.
因此,如果您正在调试类似于包含在其中的JSON请求,NSURLSessionDataTask请求数据就在其中task.originalRequest.httpBody,您可以在调试器中查看
po (NSString *)[[NSString alloc] initWithData:task.originalRequest.HTTPBody encoding:4]
Run Code Online (Sandbox Code Playgroud)
Tro*_*roy 15
在lldb中,以下工作可以让您检查NSData对象的内容:
您可以获取用于各种调试器命令的字节地址,如下所示:
p (void *)[buffer bytes]
Run Code Online (Sandbox Code Playgroud)
你看到这样的事情:
(void *) $32 = 0x0b5e11f0
Run Code Online (Sandbox Code Playgroud)
如果您知道基础数据是字符串,则可以执行以下操作:
p (char *)[buffer bytes]
Run Code Online (Sandbox Code Playgroud)
并且调试器将输出:
(char *) $33 = 0x0b5e11f0 "This is the string in your NSData, for example."
Run Code Online (Sandbox Code Playgroud)
在 Swift 中,这应该可以解决问题:
po String(data:buffer!, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
右键单击buffer并单击Print description of "buffer".
控制台应该说
Printing description of buffer:
<your data here ...>
Run Code Online (Sandbox Code Playgroud)
不幸的是,到目前为止,所有建议都没有解决实际能够快速显示NSData 内数据的问题。
我编写了一个简单的方法,可以按我需要的方式工作。从 GDB 窗口中,我可以输入内容print [Util dumpData:theData],然后得到漂亮的格式化输出。
+(void) dumpData:(NSData *)data
{
unsigned char* bytes = (unsigned char*) [data bytes];
for(int i=0;i< [data length];i++)
{
NSString* op = [NSString stringWithFormat:@"%d:%X",i,bytes[i],nil];
NSLog(@"%@", op);
}
}
Run Code Online (Sandbox Code Playgroud)
日志输出
0:24
1:0
2:4
3:0
4:0
5:0
| 归档时间: |
|
| 查看次数: |
18888 次 |
| 最近记录: |