[CLOSED]gdb не показывает локальные переменные в программах на с и c++
Лучше флаги полностью выписывать в первом посте
Пробовал -g3?
#include <stdio.h>
int main
{
int i=5;
printf ("Test\n);
getchar;
return 0;
}
Переменную i пытаюсь просмотреть сразу после вывода printf, переключаясь в gdb через ctrl+c при остановке программы на getchar.
Если остановиться на этой же строке с помощью break, то i отображается нормально. x_x
Ключ -g3 не помогает.
Компилирую командой gcc -g -O0 hw.c -o hw
krasin-boo:~$ cat hw.c
#include <stdio.h>
int main
{
int i=5;
printf ("Test\n");
getchar;
return 0;
}
krasin-boo:~$ gcc -g -O0 hw.c -o hw
krasin-boo:~$ gdb hw
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
Type "show copying" and "show warranty" for licensing/warranty details.
This GDB was configured as "x86_64-linux".
Reading symbols from /home/krasin/hw...done.
(gdb) start
Temporary breakpoint 1 at 0x40056c: file hw.c, line 5.
Starting program: /home/krasin/hw
Temporary breakpoint 1, main at hw.c:5
5 int i=5;
(gdb) step
6 printf ("Test\n");
(gdb) p i
$1 = 5
(gdb) c
Continuing.
Test
^C
Program received signal SIGINT, Interrupt.
0x00007ffff7b324a0 in read from /lib/libc.so.6
(gdb) p i
No symbol "i" in current context.
Да, это
(gdb) up
0x00007ffff7acd348 in _IO_file_underflow from /lib/libc.so.6
(gdb) up
0x00007ffff7aceeee in _IO_default_uflow from /lib/libc.so.6
(gdb) up
0x00007ffff7ac5dcc in getchar from /lib/libc.so.6
(gdb) up
0x0000000000400582 in main at hw.c:7
7 getchar;
(gdb) p i
$2 = 5
В help stack есть всякие подробности по этому поводу
Переменную i пытаюсь просмотреть сразу после вывода printf, выходя в gdb через ctrl+c при остановке программы на getchar.bt сделай в обоих случаях
Если остановиться на этой же строке с помощью break, то i отображается нормально. x_x
спасибо)
Оставить комментарий
Volshebnaya
То есть происходит следующее:(i - локальная переменная в main, инициализированная на момент просмотра. Программа - обычный hello world.)
В чём причина этого, можно ли заставить gdb отображать значения локальных переменных в команде print?
gdb 7.1, gcc 4.4.3.
Нагуглил совет компилировать без оптимизации (с ключом -O0) - не помогло, всё то же самое.