我正在使用混合Obj-C和C ++开发iPhone应用程序。似乎有时各个字段的值完全是假的,因为当从Obj-C文件步进到C ++文件时gdb报告了这些值。例如,在方法中:
int count = 1;
for(int i = 0; i< count; ++ i){
int x = 0; // put a breakpoint here to see how many times it gets hit.
}
在此示例中,有时gdb将报告“count”的值,而不是“1”。例如,它可能是126346。但是,单步执行代码,循环只迭代一次,表明'count'的值实际上是预期的值。
我是Xcode的新手。我可能只是遗漏了一些基本内容但是很难怀疑你的工具。有没有人在这方面看到过奇怪的事?解决了吗?
答案 0 :(得分:2)
我没有看到你说的gdb错误打印变量 - 但是,如果你在发行版而不是Debug中编译,你可能会遇到一些奇怪的东西,代码被优化掉了,或者看不到一些变量... < / p>
根据您的描述,您似乎更像是对“计数”有未初始化的值。如果您的代码如下:
int count;
然后计数几乎可以是任何东西,因此有时会为0 - 但其他时候会有一些大的随机数。
答案 1 :(得分:1)
你确定你一直在获得count的'value',使用NSLog并在控制台中查看值。我认为它总会显示1。 此外,
int count = 1;// put a breakpoint here to see the value of count, before and after execution of the statement.
for (int i = 0; i < count; ++i) {
int x = 0;
}
当命中断点时,没有命中该特定行,并且通过步骤看到值的变化,最初gdb给出的值将是一些任意值,因为变量未初始化,一旦它初始化后,值将更改为新值
答案 2 :(得分:0)
在这方面和许多其他方面看到了奇怪。永远不会解决。
有时使用GDB控制台会有所帮助。 Xcode包装GDB的方式绝对不错。