rust LLDB将'i8'打印为“signed char”

jgovgodb  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(264)

我使用的是LLDB extension for VSCode,而我输入为i8的变量被打印为字符。无论是在VSCode调试面板中,还是在调试器控制台中使用print时。
变量的定义方式如下:

for y in 0..self.height

self.height是一个i8
我找到了How do I make the Xcode debugger show uint8_t values as numbers?,但即使尝试添加一个fromat:type format add -f decimal int8_tprint y仍然输出(signed char) $5 = '\a'而不是 (让我参考C转义序列和ascii图表...)7

ovfsdjhp

ovfsdjhp1#

如果其他人遇到这种情况,这可能会很用途:

frame variable --format d y

变量将被打印为d所指示的“decimal”。所有格式的列表可在此处找到(AFAIK):https://lldb.llvm.org/use/variable.html#id1。
经过进一步的尝试和错误,我找到了如何将所有“signed char”格式化为小数,至少在当前会话中是这样:

type format add --format d 'signed char'

这在两柴主控台中打印变数时都可以使用,而且也会立即更新VSCode两柴面板中的值。
如果有人知道如何获得持久化,或者更好的方法是,告诉LLDB该类型实际上不是字符,而是整数,请告诉我。

sirbozc5

sirbozc52#

我知道这个线程是几个月前的事了,但是我遇到了同样的问题。我设法通过UI进入CodeLLDB的扩展设置,并在Pre Run Commands下添加命令来修复它。由于某种原因,它也不能通过launch.json对我起作用。
对于我的用例,我只是补充了一句:
type format add --format u 'unsigned char'

相关问题