我的应用程序在断言中崩溃,并且附加了调试器。为了能够重现崩溃,我想保存一个带有397个struct {uint64_t,uint64_t}元素的C ++向量文件。
我的第一种方法是尝试打印矢量。我可以将向量打印到控制台,但似乎只写入了前256个值。是否可以删除256元素限制?
我还搜索了一种从调试器中将向量保存到文件的方法,但我找不到任何方法。我甚至没有找到保存内存区域的方法,但我想必须是可能的......
答案 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);