1
Я скомпилировал GDB 7 в системе Mac OS X Leopard. Когда вы переходите через программу C, GDB не может выполнить инструкции 'printf()', которые, вероятно, не имеют связанной информации об отладке, и начинает печать «Не удается найти ограничения текущей функции».GDB не пропускает функции без отладочной информации
Вот некоторые результаты:
$ /usr/local/bin/gdb try1
GNU gdb (GDB) 7.1
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-apple-darwin10".
(gdb) list
1 #include <stdio.h>
2 static void display(int i, int *ptr);
3
4 int main(void) {
5 int x = 5;
6 int *xptr = &x;
7 printf("In main():\n");
8 printf(" x is %d and is stored at %p.\n", x, &x);
9 printf(" xptr holds %p and points to %d.\n", xptr, *xptr);
10 display(x, xptr);
(gdb) b 6
Breakpoint 1 at 0x1e8e: file try1.c, line 6.
(gdb) r
Starting program: /tmp/try1
Breakpoint 1, main() at try1.c:6
6 int *xptr = &x;
(gdb) n
7 printf("In main():\n");
(gdb) n
0x0000300a in ??()
(gdb) n
Cannot find bounds of current function
(gdb) n
Cannot find bounds of current function
Любая идея, что происходит?
Алан
Да, программа была скомпилирована с опцией -g; иначе ни одна из этих хороших отладочных данных не была бы отображена. Стандарт GDB 6.3.50, который поставляется вместе с моим Mac, работает так же, как и ваш вывод, но у меня проблема с GDB 7, скомпилированным из исходного кода. Если это какая-либо помощь, я загрузил источники GDB 7.1 из http://ftp.gnu.org/gnu/gdb/ и скомпилировал их с помощью следующих инструкций: http://chenkaie.blogspot.com/2009/11/macsnow -leopard-билд-GDB-v70-from.html. – aparkerlue