好的,所以基本上我想知道如何打印内存地址的值,该地址位于GDB中存储在寄存器中的地址的偏移量。例如,以这条装配线为例:在我的理解中,这是在堆栈指针指向的地址之后52个字节的值,并将该值存储在edx寄存器中。在本例中,值是一个字符串,因此它将存储一个char *。在edx寄存器上使用GDB内的examine命令时:
x
void*)& request +128)' may be used uninitialized in this function [-Werror=maybe-uninitialized](gdb) p *(Request*)request
这会打印出Request的成员,但是有很多成员,根据编译器警告,哪些成员的偏移量是1
如何在gdb中形成字符串并打印它。我的格式字符串保存在一个单独的数组中,参数保存在一个单独的结构数组中。int formateId; int param2; int param4;在c中,我可以使用printf打印printf(formateStr[msg[1].formateStrId],msg[1].param1,msg[2]