在谷歌上,我得到了 2 个与我的问题相关的结果,但在 SO 上,我没有找到可以回答我的问题。我在谷歌上搜索了“gdb cast struct to unsigned int c”,结果并没有提到 gdb,而是关于结构之间的转换。我正在调试一段具有如下结构的代码:
typedef struct L1_valid_entry{
uint32_t PXN:1;
uint32_t index_1:1;
uint32_t C_B:2;
uint32_t XN:1;
uint32_t DOMAIN:4;
uint32_t IMPL:1;
uint32_t AP_11_10:2;
uint32_t TEX_14_12:3;
uint32_t AP_15:1;
uint32_t nG_S:2;
uint32_t zero:1;
uint32_t NS_19:1;
uint32_t base_address:12;
}L1_valid_entry;
现在我在 GDB 中检查了这样一个结构实例并想将其打印出来,但我想将其打印为无符号整数,而不是将其位字段作为值。我尝试了 p/x 和 p/t,但没有任何变化。
编辑:p/x(无符号整数)有效!!
您可以使用该
x
命令打印从该结构地址开始的内存内容:或者:
我使用 union 来实现这一点。例如:
num
警告:小端系统和大端系统的位顺序不同。