3
是否可以让gdb调试器使用gcc样式的嵌套函数?如果是这样,需要什么版本的gcc/gdb?gdb可以调试gcc风格的嵌套C函数吗?
是否可以让gdb调试器使用gcc样式的嵌套函数?如果是这样,需要什么版本的gcc/gdb?gdb可以调试gcc风格的嵌套C函数吗?
看来,gcc/gdb已经掌握了它。与早期版本,它只是没有工作,但这是一个简单的会议记录:
[email protected]$ gdb --version
GNU gdb (GDB) Fedora (7.2-51.fc14)
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 "i686-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
~
[email protected]$ gcc --version
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
Copyright (C) 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
~
[email protected]$ cat hello.c
#include<stdio.h>
void main(void)
{
char* hello="hello";
int sub(int a){
int b;
int c;
b=a;
a++;
c=a;
return a+b+c;
}
printf("%s(%i)\n", hello, sub(3));
}
~
[email protected]$ gcc -ggdb3 hello.c -o hello
~
[email protected]$ gdb hello
GNU gdb (GDB) Fedora (7.2-51.fc14)
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 "i686-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/jla/hello...done.
(gdb) b main
Breakpoint 1 at 0x80483f1: file hello.c, line 5.
(gdb) list
1 #include<stdio.h>
2
3 void main(void)
4 {
5 char* hello="hello";
6 int sub(int a){
7 int b;
8 int c;
9 b=a;
10 a++;
(gdb) r
Starting program: /home/jla/hello
Breakpoint 1, main() at hello.c:5
5 char* hello="hello";
Missing separate debuginfos, use: debuginfo-install glibc-2.13-2.i686
(gdb) info locals
hello = 0x7aeff4 "|\355z"
(gdb) s
15 printf("%s(%i)\n", hello, sub(3));
(gdb) s
sub (a=3) at hello.c:9
9 b=a;
(gdb) info locals
b = 134518388
c = 0
(gdb) p a
$1 = 3
(gdb) p b
$2 = 134518388
(gdb) p c
$3 = 0
(gdb) where
#0 sub (a=3) at hello.c:9
#1 0x08048405 in main() at hello.c:15
(gdb)
看起来还没有。它有一个相应的错误http://sourceware.org/bugzilla/show_bug.cgi?id=8300。