Является ли GDB в Xcode просто ненормальным? - PullRequest
1 голос
/ 05 января 2010

Я разрабатываю приложение для iPhone, используя смешанные Obj-C и C ++. Кажется, что иногда значения различных полей полностью фиктивны, как сообщает gdb при переходе из файла Obj-C в файл C ++. Например, в методе:

int count = 1;

для (int i = 0; i

  int x = 0;   // put a breakpoint here to see how many times it gets hit.

}

в этом примере иногда GDB сообщит значение для «count», отличное от «1». это может быть, например, 126346. но, шагая по коду, цикл повторяется только один раз, указывая, что значение 'count' фактически было ожидаемым значением.

Я новичок в Xcode. Я, наверное, просто пропустил что-то основное. Но это отстой, чтобы сомневаться в ваших инструментах. Кто-нибудь еще видел странность в этой области? Решил это?

Ответы [ 3 ]

2 голосов
/ 05 января 2010

Я не видел, как вы говорите, опечатки gdb - однако, если вы откомпилируете в выпуске вместо Debug, вы можете столкнуться с некоторыми странными вещами с оптимизированным кодом или невозможностью видеть некоторые переменные ... 1001 *

Из того, что вы описываете, почти похоже, что у вас есть неинициализированное значение для "count". Если ваш код выглядел так:

int count;

Тогда счет может быть почти любым и, следовательно, иногда будет равен 0, но иногда может быть большим случайным числом.

1 голос
/ 05 января 2010

Вы уверены, что получаете значение 'count' постоянно, используйте 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, будет некоторыми произвольными значениями, так как переменная не инициализируется, и после инициализируется, значение меняется на новое значение

0 голосов
/ 05 января 2010

Видел странность, в этом отношении и во многих других. Никогда не решается.

Иногда использование консоли GDB напрямую помогает. Способ, которым XCode оборачивает GDB, определенно ненадежен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...