C 在lldb中,如何打印作为位字段的结构字段
我无法让lldb计算包含位字段的表达式C 在lldb中,如何打印作为位字段的结构字段,c,lldb,bit-fields,C,Lldb,Bit Fields,我无法让lldb计算包含位字段的表达式 struct foobar { int a; unsigned short short_msb: 8; unsigned short short_lsb: 8; } struct foobar g_var = {10, 20, 30}; int main(void) { } 我有一个包含位字段的结构 struct foobar { int a; unsigned short short_msb: 8; un
struct foobar {
int a;
unsigned short short_msb: 8;
unsigned short short_lsb: 8;
}
struct foobar g_var = {10, 20, 30};
int main(void) { }
我有一个包含位字段的结构
struct foobar {
int a;
unsigned short short_msb: 8;
unsigned short short_lsb: 8;
}
struct foobar g_var = {10, 20, 30};
int main(void) { }
在LLDB 6.0中,试图打印位字段的值会导致错误。
我可以计算对象g_var,但只能同时计算所有变量,不能单独计算字段
(lldb)po g_var
(结构foobar)$1={
a=10
b=20
c=30
}
(lldb)po g_变量a
(int)$2=10
(lldb)po g_var.short_msb
错误:假设进行解释,但失败:解释程序在执行期间无法解析值
我们应该如何帮助调试您不会展示给我们的代码?@LeeDanielCrocker:这个问题并不要求调试帮助。在macOS 10.14.6上使用Apple Clang 11.0.0和LLDB 1100.0.30.11,po g_var.short_msb
生成“20”。您使用的编译器是什么,命令行开关是什么,LLDB的版本是什么,在什么系统上?LLDB6.0已经有几年的历史了。如果您可以升级到更新版本的lldb,您应该尝试一下。在这段时间里我们已经修复了很多东西,所以我做了更多的测试。我最初的问题是一个ELF二进制文件,它是由用于powerpc的gcc工具链生成的。我从x64linuxgcc运行了一个类似的ELF输出,在这种情况下,LLDB能够显示位字段。另外,在这两种情况下(gcc x86和gcc powerpc),当我只输出变量本身而不指定特定字段时,它能够显示所有字段的正确值。我启用了更多的调试,特别的错误是:“无法计算%bf.load=load i48,i48*%8,align 4”我们应该如何帮助调试您不会显示给我们的代码?@LeeDanielCrocker:问题不需要调试帮助。在macOS 10.14.6上使用Apple Clang 11.0.0和LLDB 1100.0.30.11,po g_var.short_msb
生成“20”。您使用的编译器是什么,命令行开关是什么,LLDB的版本是什么,在什么系统上?LLDB6.0已经有几年的历史了。如果您可以升级到更新版本的lldb,您应该尝试一下。在这段时间里我们已经修复了很多东西,所以我做了更多的测试。我最初的问题是一个ELF二进制文件,它是由用于powerpc的gcc工具链生成的。我从x64linuxgcc运行了一个类似的ELF输出,在这种情况下,LLDB能够显示位字段。另外,在这两种情况下(gcc x86和gcc powerpc),当我只输出变量本身而不指定特定字段时,它能够显示所有字段的正确值。我启用了更多调试,具体错误是:“无法计算%bf.load=load i48,i48*%8,align 4”