[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]# 
Logo

更多推荐