lldb 不会打印终端中的所有字符
lldb won't print all characters in Terminal
我正在使用终端中的 lldb 来调试 C++ 程序。我可以将它用于大多数事情,除了它不会打印某些字符。
在某些时候,我的程序从远程系统 (vector<unsigned char>
) 接收到一个字节数组,当我打印该值时,我得到以下信息:
[10] = '[=10=]'
[11] = '[=10=]'
[12] = 'O'
[13] = '\b'
[14] = '[=10=]'
[15] = '\x01'
[16] = '[=10=]'
[17] = '[=10=]'
[18] = '[=10=]'
[19] = '\x17'
[20] = '[=10=]'
[21] = '\x04'
[22] = '?'
[23] = '?'
[24] = '?'
[25] = '?'
[26] = '[=10=]'
[27] = '[=10=]'
[28] = 'n'
[29] = 'a'
[30] = 'm'
[31] = 'e'
[32] = '[=10=]'
[33] = '[=10=]'
[34] = '[=10=]'
使用Xcode我可以看到四个?
标记已经变成了四个\xff
。有没有办法让 lldb 在没有 Xcode 的情况下正确打印这些字符?
如果要查看字符数组元素的十六进制值,可以使用 lldb 对 gdb 格式化语法的模拟:
(lldb) print/x char_vec
要查看所有可用的格式选项,请执行以下操作:
(lldb) help gdb-format
顺便说一句,我不确定说这是 "printing them correctly..." 是否正确。如果我有一个字符数组,其中包含一些 0xff 值,则 printf 将它们打印为“?”。这就是这个值的字符表示。默认情况下,lldb 通过将它们解释为 printf 来打印 char 变量。如果使用 lldb 的数据格式化程序更适合您,您可以将此默认值更改为十六进制。参见:
http://lldb.llvm.org/varformats.html
了解更多详情。
我正在使用终端中的 lldb 来调试 C++ 程序。我可以将它用于大多数事情,除了它不会打印某些字符。
在某些时候,我的程序从远程系统 (vector<unsigned char>
) 接收到一个字节数组,当我打印该值时,我得到以下信息:
[10] = '[=10=]'
[11] = '[=10=]'
[12] = 'O'
[13] = '\b'
[14] = '[=10=]'
[15] = '\x01'
[16] = '[=10=]'
[17] = '[=10=]'
[18] = '[=10=]'
[19] = '\x17'
[20] = '[=10=]'
[21] = '\x04'
[22] = '?'
[23] = '?'
[24] = '?'
[25] = '?'
[26] = '[=10=]'
[27] = '[=10=]'
[28] = 'n'
[29] = 'a'
[30] = 'm'
[31] = 'e'
[32] = '[=10=]'
[33] = '[=10=]'
[34] = '[=10=]'
使用Xcode我可以看到四个?
标记已经变成了四个\xff
。有没有办法让 lldb 在没有 Xcode 的情况下正确打印这些字符?
如果要查看字符数组元素的十六进制值,可以使用 lldb 对 gdb 格式化语法的模拟:
(lldb) print/x char_vec
要查看所有可用的格式选项,请执行以下操作:
(lldb) help gdb-format
顺便说一句,我不确定说这是 "printing them correctly..." 是否正确。如果我有一个字符数组,其中包含一些 0xff 值,则 printf 将它们打印为“?”。这就是这个值的字符表示。默认情况下,lldb 通过将它们解释为 printf 来打印 char 变量。如果使用 lldb 的数据格式化程序更适合您,您可以将此默认值更改为十六进制。参见:
http://lldb.llvm.org/varformats.html
了解更多详情。