GDB:为什么我不打印这个?

时间:2011-04-05 04:17:00

标签: gdb debugging

(gdb) print argv[1]
$5 = 0xbffffb1d "hello"
(gdb) step
21     sz = strlen(argv[1]) + 1;
(gdb) print sz
$6 = 0
(gdb) printf "%s", sz
Cannot access memory at address 0x0
(gdb) printf "%i", sz
0

我期待sz中有4个,为什么它会以0形式出现?

1 个答案:

答案 0 :(得分:2)

我不确定你为什么期待4。您从5获得strlen(argv[1]),因为hello有5个字符。然后你要添加1,这就是 6 的答案。

sz = strlen(argv[1]) + 1; // 5 + 1 = 6