GDB:为什么我不能打印这个?
(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
?
(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
I am expecting 4 in sz
, why is it coming out as 0
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定您为什么期待
4
。您可以从strlen(argv[1])
得到5
,因为hello
有 5 个字符。然后向其中添加1
,这就是答案为 6 的原因。I am not sure why you are expecting
4
. You get5
fromstrlen(argv[1])
becausehello
has 5 characters. And then you are adding1
to it which is why the answer is 6.