2011-10-25 8 views

答えて

0

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) 
関連する問題