繁体   English   中英

lldb不会在终端中打印所有字符

[英]lldb won't print all characters in Terminal

我正在使用来自Terminal的lldb调试C ++程序。 我可以将其用于大多数事情,除了它不会打印某些字符。

在某个时候,我的程序从远程系统( vector<unsigned char> )接收一个字节数组,当我打印该值时,得到以下信息:

  [10] = '\0'
  [11] = '\0'
  [12] = 'O'
  [13] = '\b'
  [14] = '\0'
  [15] = '\x01'
  [16] = '\0'
  [17] = '\0'
  [18] = '\0'
  [19] = '\x17'
  [20] = '\0'
  [21] = '\x04'
  [22] = '?'
  [23] = '?'
  [24] = '?'
  [25] = '?'
  [26] = '\0'
  [27] = '\0'
  [28] = 'n'
  [29] = 'a'
  [30] = 'm'
  [31] = 'e'
  [32] = '\0'
  [33] = '\0'
  [34] = '\0'

使用Xcode我可以看到这四个? 标记已变成四个\\xff 有没有一种方法可以使lldb在没有Xcode的情况下正确打印这些字符?

如果要查看字符数组元素的十六进制值,可以使用lldb对gdb格式的合成语法的仿真:

(lldb) print/x char_vec

要查看所有可用的格式设置选项,请执行以下操作:

(lldb) help gdb-format

顺便说一句,我不确定是否正确地说这是“正确打印它们...”。 如果我有一个字符数组,其中包含一些0xff值,则printf将它们打印为'?'。 这就是该值的字符表示。 默认情况下,lldb通过将字符变量解释为printf来打印char变量。 如果更适合使用lldb的数据格式化程序,则可以将此默认值更改为十六进制。 看到:

http://lldb.llvm.org/varformats.html

更多细节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM