GDB неиспользуемая переменная - PullRequest
6 голосов
/ 21 ноября 2011

Можно ли получить значение неиспользуемой переменной с помощью GDB?Есть ли какая-то конфигурация для GCC, так что значение мусора неиспользуемой переменной будет отображаться не «оптимизированным»?

c файл:

#include<stdio.h>

void main()
{
    int x;
    int y;
    printf("value of x: %d",x);

}

В GDB я хочу получитьмусорное значение переменной y.

(gdb) run
Starting program: /home/charmae/workspace/AVT/a.out 

Breakpoint 1, main () at file4.c:7
7       printf("value of x: %d",x);
(gdb) info locals
x = 2789364
(gdb) p y
$1 = <optimized out>
(gdb) p x
$2 = 2789364

Ответы [ 3 ]

1 голос
/ 21 ноября 2011

Это не имеет ничего общего с GDB. Объект, который оптимизировал эту переменную, является компилятором (вероятно, GCC в вашем случае). Вы можете заставить его оставить его, объявив переменную как volatile

Лучший вопрос - почему вы пытаетесь это сделать?

0 голосов
/ 21 ноября 2011

Вы можете добавить оператор y=y;.Это заставит использовать y, а с gcc -O0 -g отслеживать его (по крайней мере, на моем Linux / Debian / Sid / AMD64 с gcc 4.6.2 и gdb 7.3.50)

0 голосов
/ 21 ноября 2011

Это не имеет ничего общего с gcc.Либо компилятор имеет скомпилированный код для поддержания значения, либо нет.

...