Xcode中的GDB是不是很好看?

时间:2010-01-05 05:32:28

标签: iphone xcode gdb

我正在使用混合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的新手。我可能只是遗漏了一些基本内容但是很难怀疑你的工具。有没有人在这方面看到过奇怪的事?解决了吗?

3 个答案:

答案 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的方式绝对不错。