LLDB将"i8"打印为"signed char"



我正在使用VSCode的LLDB扩展,并且我的变量类型为i8被打印为字符。在VSCode调试面板中,以及在调试器控制台中使用print时。

变量定义如下:

for y in 0..self.height

self.heighti8

我发现我如何使Xcode调试器显示uint8_t值作为数字?,但即使尝试添加fromat:type format add -f decimal int8_t,print y仍然输出(signed char) $5 = 'a'而不是(让我参考C转义序列和ascii图…)7.

我知道这个线程是几个月前的,但我遇到了同样的问题。我设法通过UI进入CodeLLDB的扩展设置来修复它,并在预运行命令下添加命令。由于某些原因,它在发射过程中不起作用。Json也适合我。

对于我的用例,我只是添加了:

type format add --format u 'unsigned char'

如果有人遇到这个,这可能是有用的:

frame variable --format d y

该变量将被打印为"decimal"由d指示。所有格式的列表可以(AFAIK)在这里找到:https://lldb.llvm.org/use/variable.html#id1.

经过进一步的跟踪和错误,我想出了如何格式化所有的"signed字符"对于小数,至少对于当前会话:

type format add --format d 'signed char'

这将在调试控制台中打印变量时工作,并且它也将立即更新VSCode的调试面板中的值。

如果有人知道如何获得这种持久性,或者更好,告诉LLDB类型实际上是而不是一个字符但是一个整数,请告诉我。

相关内容

  • 没有找到相关文章

最新更新