记得以前gdb可以直接把一个大结构的所以元素的值列出来。 就是例如struct student *p_student, 直接print p_student就可以看到所以的该结构的元素值。 不用print p_student->;score等一个个看 今天看了半天gdb的help,也没找到。 前辈们提个醒?
int main(){ char ch[15]; ........ } 函数调用,我理解的栈结构应该是这样的 上一栈结构 (参数2) (参数1) eip ebp 这一栈开始 ch 。。。。。 大致是这样吧 但是加了 -g后好像就不是了 进入gdb后,info f(main这一层的栈结构) 显示的是 eip at 0xbffff1dc ebp at 0xbffff1d8, edi at 0xbffff1d4, esi at 0xbffff1d0, &ch at 0xbffff1c0. 为什么?在局部变量ch和ebp间那两个寄存器中是什么值? 晕!!
我在c程序的头部有两个变量 int buf[]={1,2,3}; int *b2={4,5,6}; 然后gcc -g编译,gdb运行r (gdb) p buf $1={1,2,3} (gdb) p b2 $2=(int*) 0x2 为什么gdb能打印出来静态数组? 它怎么知道这个buf有多大? $2的打印结果我能理解,$1的打印结果我就没法理解了。如果说buf是放在数据段里面的,难道说数据段里面还有地方指名所有静态数组变量的大小么? 学汇编的时候没有注意到过啊。 请大虾指点!
用gdb调试程序,用PRINT只能看到一个变量的值。 如我想调试一个链表程序,链表不停的连接下去。我想看当前节点的下一个节点的值,我只能PRINT当前节点,然后看到的是当前节点的NEXT域,同样是一个地址,从而无法想VC调试那样,可以不停的连接下去,下个节点的值直接显示出来。 同志们,有没有什么好的办法?谢谢。
file a.out list 在使用gdb调试程序时想要列出源代码但报错: 1 ../sysdeps/i386/elf/start.S:没有那个目录或文件 in ../sysdeps/i386/elf/start.S 不知是什么原因
gdb prog core
#0 0xc003bc98 in