Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在lldb中,如何打印作为位字段的结构字段_C_Lldb_Bit Fields - Fatal编程技术网

C 在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

我无法让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;
    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”