我正在尝试使用 gdb 进行调试。我知道如果你想以字符串形式输出,你必须使用“x/s Ptr”。有时效果很好。但很多时候我得到的是 Null 值,即“”或一些随机数值。我的文件有 10000 行代码。 :-p 请找到一些 gdb 输出。例如
krb5_get_credentials_for_user (context=0x59c00eb0, options=4, ccache=0x5a001d40, in_creds=0x5ab022a8, subject_cert=0x0,
out_creds=0x5ab02378) at test_abc.c:696
(gdb) x/s 0x59c00eb0
0x59c00eb0: "$\247\016\227"
(gdb) x/s 0x5ab022a8
0x5ab022a8: ""
有人可以告诉我如何解决这个问题吗?提前致谢!
最佳答案
But many times I am getting either Null value i.e. " " or some random numeric values.
你所展示的内容没有任何问题。只是您正在检查的内存位置不是指向字符串 (0x59c00eb0
) 或指向空字符串 (0x5ab022a8
)。
您没有提供任何证据表明这些位置应该指向字符串,事实上,正如(现已删除)评论所示,context
指向 struct _krb5_context
,其中包含魔数(Magic Number)作为第一个成员。因此,您应该使用x/w
来检查它。
关于c++ - 使用 gdb 进行调试 - (gdb) "x/s pointer"输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38236473/