gdb7.5打印utf8字符串显示字符串地址而不是字符串内容 我刚刚安装了最新发布的GDB—GDB7.5。当我用它调试用UTF-8编码的C++程序时,我用命令“设置字符集UTF-8”将GDB字符集设置为UTF8。但是,当我要打印字符串时:char*str=”明天是个好天气",“p str”结果是字符串的地址,而不是内容。那么gdb调试utf8字符串需要什么呢

gdb7.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

断点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)

准确地告诉我们您做了什么,以及准确地告诉我们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请将此输入您的问题(带格式)并删除您的评论。