1167 ptr = (void*)getcwd(cwd, MAX_PATH_LENGTH-1);
(gdb) n
1168 if (!ptr) {
(gdb) print ptr
$1 = 0xbff2d96c "/media/MMC-SD/partition1/aaaaaaaaaaa"
(gdb) print &cwd
$2 = (char (*)[3500]) 0xbff2d96c
(gdb) print strlen(cwd)
$3 = 36
(gdb) print "%s",cwd
$4 = "/media/MMC-SD/partition1/aaaaaaaaaaa", '\0' <repeats 912 times>, "��O�001\000\000\000\000��027\000\000\000�3����EL鷠3�000��027\000\000\000\000\000\000\000\027\000\000\000\000��/�027\000\000\000�3����N����\230���鷠3�000��027\000\000\000\000\000\000\000��000\000\000\000\001\000\000\000��M鷠3����\000\000\000\000.\231�027��w\005\b\001\000"...
(gdb) print "%s", ptr
$5 = 0xbff2d96c "/media/MMC-SD/partition1/aaaaaaaaaaa"
(gdb) Quit
Neden ptr dizeyi doğru yazdırıyor, ancak cwd değil; Bu da programı etkiler ve cwd ...gdb print ptr ile karıştırılır ve baskı "% s"
[değiştir: kullanmayı denerseniz çöküyor bu kilitlenme bu varyasyon üzerinde bir aptal arabellek taşması nedeniyle ortaya çıktı ... grr ... gdb değil, ama baskı soru "bayt tampon" muhtemelen gdb özgüdür olarak ptr
olarak güzel biçimlendirilmiş dize ve cwd
görüntülenir
herhangi bir kişi, daha fazla bilgi vermesi için başlığı düzenlemek ister? Bunu yapmak için temsilcisi yok –