gdb7.5打印utf8字符串显示字符串地址而不是字符串内容 我刚刚安装了最新发布的GDB—GDB7.5。当我用它调试用UTF-8编码的C++程序时,我用命令“设置字符集UTF-8”将GDB字符集设置为UTF8。但是,当我要打印字符串时:char*str=”明天是个好天气",“p str”结果是字符串的地址,而不是内容。那么gdb调试utf8字符串需要什么呢
断点1,test()位于test.cpp:6 6字符*str=”我们的世界多么美好“ (gdb)n 8 printf(“%s\n”,str) (gdb)p str $1=0x40067c“0\221们2\204265\214321016好" (gdb)字符集UTF-8 (gdb)显示字符集 主机字符集为“UTF-8”。 目标字符集为“UTF-8”。 目标宽字符集为“自动”;目前为UTF-32” (gdb)p str $2=0x40067cgdb7.5打印utf8字符串显示字符串地址而不是字符串内容 我刚刚安装了最新发布的GDB—GDB7.5。当我用它调试用UTF-8编码的C++程序时,我用命令“设置字符集UTF-8”将GDB字符集设置为UTF8。但是,当我要打印字符串时:char*str=”明天是个好天气",“p str”结果是字符串的地址,而不是内容。那么gdb调试utf8字符串需要什么呢,utf-8,gdb,Utf 8,Gdb,断点1,test()位于test.cpp:6 6字符*str=”我们的世界多么美好“ (gdb)n 8 printf(“%s\n”,str) (gdb)p str $1=0x40067c“0\221们2\204265\214321016好" (gdb)字符集UTF-8 (gdb)显示字符集 主机字符集为“UTF-8”。 目标字符集为“UTF-8”。 目标宽字符集为“自动”;目前为UTF-32” (gdb)p str $2=0x40067c (gdb)准确地告诉我们您做了什么,以及准确地告诉我们g
(gdb)准确地告诉我们您做了什么,以及准确地告诉我们gdb打印了什么 使用gdb-7.5:
Temporary breakpoint 1, main () at t.c:5
5 char *str = "明天是个好天气";
(gdb) n
6 return 0;
(gdb) p str
$1 = 0x4005cc "明天是个好天气"
(gdb) show charset
The host character set is "auto; currently UTF-8".
The target character set is "auto; currently UTF-8".
The target wide character set is "auto; currently UTF-32".
(gdb) set charset utf
Undefined item: "utf".
这表明:
- GDB为我做了“开箱即用”的正确事情
- 您可能没有执行
,但执行了其他操作设置字符集utf
LANG
设置是相关的。我的设置是:
$ echo $LANG
en_US.UTF-8
如果我取消设置LANG
,我会得到:
(gdb) p str
$1 = 0x4005cc "\346\230\216\345\244\251\346\230\257\344\270\252\345\245\275\345\244\251\346\260\224"
@RedLv请将此输入您的问题(带格式)并删除您的评论。