标签:gdb调试工具
GDB是GNU Debuger的简称,是GNU发布的一款unix下应用程序调试工具。它被广泛使用在各个产家各种应用中。GDB和所有常用的调试工具一样,它的主要功能有:监视变量的值、设置断点及单步执行。程序源代码如下
#include <stdio.h>
int func(int n)
{
int sum=0,i;
for(i=0; i<n; i++)
{
sum+=i;
}
return sum;
}
int main()
{
int i;
long result = 0;
for(i=1; i<=100; i++)
{
result += i;
}
printf("result[1-100] = %d \n\r", result );
printf("result[1-250] = %d \n\r", func(250) );
}使用gcc -g变成生成可执行文件miki,方法为 gcc -g miki.c -o miki$gdb miki
GNU gdb (GDB) CentOS (7.0.1-42.el5.centos)
Copyright (C) 2009 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-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>…
Reading symbols from /u01/home/oracle/miki…done.
(gdb) l 1
1 #include <stdio.h>
2
3 int func(int n)
4 {
5 int sum=0,i;
6 for(i=0; i<n; i++)
7 {
8 sum+=i;
9 }
10 return sum;
(gdb)
11 }
12
13
14 main()
15 {
16 int i;
17 long result = 0;
18 for(i=1; i<=10; i++)
19 {
20 result += i;
(gdb)
21 }
22
23 printf("result[1-10] = %d \n\r", result );
24 printf("result[1-5] = %d \n\r", func(5) );
25 }
(gdb)
Line number 26 out of range; miki.c has 25 lines.
(gdb) r
Starting program: /u01/home/oracle/miki
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
result[1-10] = 55
result[1-5] = 10
Program exited with code 023. (gdb) b 23 Breakpoint 1 at 0x4004f2: file miki.c, line 23. (gdb) info b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:23 (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:23 (gdb) break func Breakpoint 2 at 0x40049f: file miki.c, line 5. (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:23 2 breakpoint keep y 0x000000000040049f in func at miki.c:5 (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:23 2 breakpoint keep y 0x000000000040049f in func at miki.c:5 3 breakpoint keep y 0x000000000040049f in func at miki.c:2 (gdb) d 2 (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:23 3 breakpoint keep y 0x000000000040049f in func at miki.c:2 (gdb) delete 3 (gdb) i b Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000004004f2 in main at miki.c:2
(gdb) r
Starting program: /u01/home/oracle/miki
warning: no loadable sections found in added symbol-file system-supplied DSO at 0x2aaaaaaab000
Breakpoint 1, main () at miki.c:23
23 printf("result[1-10] = %d \n\r", result );
(gdb) n
result[1-10] = 55
24 printf("result[1-5] = %d \n\r", func(5) );
(gdb)
Breakpoint 2, func (n=5) at miki.c:5
5 int sum=0,i;
(gdb) p n
$1 = 5
(gdb) p i
$2 = 10922
(gdb) p sum
$3 = -1431642112
(gdb) n
6 for(i=0; i<n; i++)
(gdb) p i
$4 = 10922
(gdb) n
8 sum+=i;
(gdb) p i
$5 = 0
(gdb) p sum
$6 = 0
(gdb) n
6 for(i=0; i<n; i++)
(gdb) p i
$7 = 0
(gdb) p n
$8 = 5
(gdb) p i
$9 = 0
(gdb) n
8 sum+=i;
(gdb) p i
$10 = 1
(gdb) p sum
$11 = 0
(gdb) n
6 for(i=0; i<n; i++)
(gdb) p sum
$12 = 1
(gdb) n
8 sum+=i;
(gdb) n
6 for(i=0; i<n; i++)
(gdb) p sum
$13 = 3
(gdb) n
8 sum+=i;
(gdb) n
6 for(i=0; i<n; i++)
(gdb) n
8 sum+=i;
(gdb) c
Continuing.
result[1-5] = 10
Program exited with code 023.
(gdb)
标签:gdb调试工具
原文地址:http://blog.csdn.net/keshacookie/article/details/37884593