在调试会话期间将矢量保存到文件(Xcode)

时间:2014-03-02 20:35:00

标签: ios xcode

我的应用程序在断言中崩溃,并且附加了调试器。为了能够重现崩溃,我想保存一个带有397个struct {uint64_t,uint64_t}元素的C ++向量文件。

我的第一种方法是尝试打印矢量。我可以将向量打印到控制台,但似乎只写入了前256个值。是否可以删除256元素限制?

我还搜索了一种从调试器中将向量保存到文件的方法,但我找不到任何方法。我甚至没有找到保存内存区域的方法,但我想必须是可能的......

1 个答案:

答案 0 :(得分:1)

由于您提到您在Xcode的调试器中停止了,我假设您正在使用lldb进行调试。当您在调试器中停止时,可以使用expression命令执行基本上任意的代码,例如:

expression for(int j = 0; j < 10; j++) { (void)NSLog(@"%d", j); }

将执行for循环并打印数字0到9.您应该能够使用类似的技术迭代矢量并将其写入文件。您可以使用分号组合多个表达式,就像编写普通代码一样(好吧,除了换行符)。例如,这会将“Hello,world”写入/tmp/vector.dat的临时文件,而不是您想要的,但我认为您会明白这一点:

 expression FILE *fp = (FILE*)fopen("/tmp/vector.dat", "w"); (void)fprintf(fp, "Hello, world!\n"); (void)fclose(fp);