GDB не может смотреть переменные, объявленные внутри цикла for - PullRequest
1 голос
/ 16 августа 2010

я использую gcc 4.1.2 20080704 (Red Hat 4.1.2-48) GNU GDB (GDB) Red Hat Enterprise Linux (7.0.1-23.el5_5.1)

и я не могу смотреть переменные, объявленные внутри цикла for. Я попытался воссоздать это поведение на меньшем примере, но оно работало нормально. Похоже, эта проблема проявляется только внутри сложных функций-членов класса. Пожалуйста, посоветуйте.

РЕДАКТИРОВАТЬ: оптимизации отключены

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Похоже, вы скомпилированы с оптимизацией на.Попробуйте перекомпилировать с помощью -O0 -g.

0 голосов
/ 22 июня 2012

Я не смог решить это точно, но это может помочь вам.

Допустим, мы хотим получить доступ к переменной цикла в

for(int i=0;i<x;i++){...}

Вы можете сделать следующее

print &i
$1 = (int *) 0x7fffffffdfa8
watch *0x7fffffffdfa8

У этого есть определенный недостаток, заключающийся в необходимости ждать, поскольку он может получить переназначенные значения мусора много раз, и каждый раз, когда это происходит, вы получаете уведомление

0 голосов
/ 16 августа 2010

Я согласен, что вам, вероятно, нужно отключить оптимизацию. почему объясняется тем, что компилятор, вероятно, исключил локальные переменные на этапе оптимизации и сохранил их значения непосредственно в регистре.

Вы также можете попробовать объявить эти переменные как volatile во время тестирования, если вы не хотите перестраивать все с -O0.

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