程序遇到一个最诡异的BUG了...
看看GDB的调试:
(gdb) l utils.cpp:83
78 }
79
80
81 void dumpBuffer(const char *in, size_t len)
82 {
83 for(int i = 0 ; i < (int)len; i ++) {
84 printf("%2x \n",in[i]);
85 }
86 printf("\n");
87 }
(gdb) jump 82
Continuing at 0x80584f6.
Breakpoint 1, dumpBuffer (in=0xb7c10d0c "\002", len=32) at utils.cpp:83
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb) p/x *in@len
$10 = {0x2, 0x0, 0x20, 0x6, 0x8, 0x0, 0x49, 0x2e, 0x93, 0x1f, 0xa1, 0x4e,
0x60, 0x0, 0x30, 0x46, 0x36, 0x42, 0x30, 0x34, 0x7b, 0x32, 0x38, 0x30, 0x33,
0x41, 0x38, 0x42, 0x43, 0x45, 0x0, 0x3}
(gdb) n
84 printf("%2x \n",in[i]);
(gdb) n
2
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb) n
84 printf("%2x \n",in[i]);
(gdb) n
0
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
20
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
6
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
8
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
0
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
49
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
2e
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb)
84 printf("%2x \n",in[i]);
(gdb)
ffffff93
83 for(int i = 0 ; i < (int)len; i ++) {
(gdb) p i
$11 = 8
(gdb) p /x in[i]
$12 = 0x93
(gdb) p *stdout
$13 = {_flags = -72537468,
_IO_read_ptr = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n", _IO_read_end = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n",
_IO_read_base = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n",
_IO_write_base = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n", _IO_write_ptr = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n",
_IO_write_end = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n", _IO_buf_base = 0xb7fda000 "ffffff93 \nerverResponse:\nferUsed = 0,len = 6\n",
_IO_buf_end = 0xb7fda400 "", _IO_save_base = 0x0, _IO_backup_base = 0x0,
_IO_save_end = 0x0, _markers = 0x0, _chain = 0xb7e19ac0 <_IO_2_1_stdin_>,
_fileno = 1, _flags2 = 0, _old_offset = -1, _cur_column = 0,
_vtable_offset = 0 '\000', _shortbuf = "",
_lock = 0xb7e1a8b8 <_IO_stdfile_1_lock>, _offset = -1, _codecvt = 0x0,
_wide_data = 0xb7e19c20 <_IO_wide_data_1>, _freeres_list = 0x0,
_freeres_buf = 0x0, _freeres_size = 0, _mode = -1,
_unused2 = '\000' <repeats 39 times>}
(gdb)
数据明明是正确的,但printf输出时总是在中间会多输出一些ffffff,就像上面的红色字样的..蛋疼..
估计是哪个地方写数据越界了....慢慢找找BUG了...哎哎,