[root@templateTest tmp]# gdb ./a.out
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
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 "i386-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/a.out...done.
(gdb) l
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main(){
4 char usPort = 5;
5 char * a;
6 a=(char *)usPort;
7
8 return;
9 }
(gdb) b 6
Breakpoint 1 at 0x8048369: file 123.c, line 6.
(gdb) r
Starting program: /tmp/a.out
Breakpoint 1, main () at 123.c:6
6 a=(char *)usPort;
(gdb) p a
$1 = 0x211600 "U\211\345WVS\350\260x"
(gdb) p usPort
$2 = 5 '\005'
(gdb) p (char)usPort
$3 = 5 '\005'
(gdb) p (char *)usPort
$4 = 0x5 <Address 0x5 out of bounds>
(gdb) p (char *)21
$5 = 0x15 <Address 0x15 out of bounds> //直接将21转换成地址了
(gdb) q
A debugging session is active.
Inferior 1 [process 6762] will be killed.
Quit anyway? (y or n) y
[root@templateTest tmp]#
GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
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 "i386-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /tmp/a.out...done.
(gdb) l
1 #include<stdio.h>
2 #include<stdlib.h>
3 int main(){
4 char usPort = 5;
5 char * a;
6 a=(char *)usPort;
7
8 return;
9 }
(gdb) b 6
Breakpoint 1 at 0x8048369: file 123.c, line 6.
(gdb) r
Starting program: /tmp/a.out
Breakpoint 1, main () at 123.c:6
6 a=(char *)usPort;
(gdb) p a
$1 = 0x211600 "U\211\345WVS\350\260x"
(gdb) p usPort
$2 = 5 '\005'
(gdb) p (char)usPort
$3 = 5 '\005'
(gdb) p (char *)usPort
$4 = 0x5 <Address 0x5 out of bounds>
(gdb) p (char *)21
$5 = 0x15 <Address 0x15 out of bounds> //直接将21转换成地址了
(gdb) q
A debugging session is active.
Inferior 1 [process 6762] will be killed.
Quit anyway? (y or n) y
[root@templateTest tmp]#
本文介绍使用GDB进行程序调试的基本步骤及注意事项,包括设置断点、查看变量等关键操作。
384

被折叠的 条评论
为什么被折叠?



