(gdb) s
176 n1 &= 0xdf;
(gdb) s
177 n1 -= 'A';
(gdb) s
178 if (n1 < 0 || n1 >= 26)
(gdb) s
182 n1 = hash->hash0[n1];
(gdb) p n1
$4 = 24
(gdb) s
174 n1 = *userid++;
(gdb) p n1
$5 = <value optimized out>
(gdb) bt
#0 ucache_hash (userid=0xbff40ce2 "yinhang") at ucache.c:174
#1 0x080db786 in getuser (userid=0xbff40ce2 "yinhang", user=0x816cc40)
at ucache.c:517
#2 0x080c26d8 in login_query () at newmain_single.c:260
#3 0x080c2ed8 in main_bbs (convit=0, argv=0xbff41e9c "bin/bbsd")
at newmain_single.c:1081
#4 0x080be3b0 in bbs_main (argv=0xbff41e9c "bin/bbsd") at bbsd_single.c:489
#5 0x080beb3b in main (argc=1752066425, argv=0x676e61) at bbsd_single.c:672
(gdb)
182怎么会跳到174,晕
(gdb) list 178
173
174 n1 = *userid++;
175 if (n1 >= 'a' && n1 <= 'z')
176 n1 &= 0xdf;
177 n1 -= 'A';
178 if (n1 < 0 || n1 >= 26)
179 return 0;
180
181 /* disable it usage->hash0[n1]++;*/
182 n1 = hash->hash0[n1];
(gdb) list 185
180
181 /* disable it usage->hash0[n1]++;*/
182 n1 = hash->hash0[n1];
183
184 while (n1 < 0) {
185 n1 = -n1 - 1;
186 if (!*userid) {
187 /* disable it usage->hash[n1][0]++; */
188 n1 = hash->hash[n1][0];
189 } else {
(gdb)
【 在 luckwithme (Marvel) 的大作中提到: 】
: 其实我觉得最好的办法就是gdb调调看,呵呵
--
FROM 220.181.38.244