2016-09-30 2 views
0

Моя цель - выяснить адресное пространство str_main, но gdb пропускает мою точку останова.Точка останова GDB не останавливается

Как найти его адресное пространство?

У меня есть простой с программой, stack.c:

.... 
19 int main(int argc, char **argv[]) 
20 { 
21 char str_main[517]; 
22 FILE *badfile; 
23 
24 badfile = fopen("badfile","r"); 
.... 

Когда я вхожу GDB я поставил точку останова в строке 21. Однако, когда я запускаю отладчик, я получаю следующее сообщение:

Breakpoint 1, main(argc=1, argv=0xbffff3d4) at stack.c:24 
24   badfile = fopen("badfile","r"); 
+2

Строка 22 на самом деле не является исполняемой строкой в ​​скомпилированном двоичном формате. Но в чем проблема? Остановка на линии 24 отлично подходит для того, что вы хотите сделать. Как вы думаете, что вы можете увидеть в отладчике в строке 22, которую вы не можете включить в строке 24? То есть у вас есть не проблема. – kaylum

ответ

3

GDB не останавливается на объявлениях без значения по умолчанию.

Даже после достижения 24 вы все равно можете распечатать адрес.

p /s str_main 
Смежные вопросы