本帖最后由 hongyunqi 于 2010-07-24 10:23 编辑 工作中遇到的问题,希望有人能帮忙解答 三个类的定义抽象出来是这样的[code]class B1 { public: virtual void func1(); } class B2 { public: virtual void func2(); } class D: public B1, public B2 { public: void func1(); void func2(); } int main() { B2 *dd = new D(); dd->func2(); }[/code]类D多重继承自两个类B1和B2,那么D的对象正常情况下应该有两个...
by hongyunqi - C/C++ - 2010-07-24 20:05:39 阅读(3108) 回复(1)
原始函数:
int getx(int x,int y)
{
return x+y;
}
使用gdb查看 该函数的汇编代码
(gdb) disassemble getx
Dump of assembler code for function getx:
0x08048470
[code]
1 #include
请问 用gdb反汇编得到 :0xc1003044
请问gdb有什么命令能查看一个函数中的某一变量的地址,或者有什么命令可以查看当前程序的内存分布?
函数中声明的变量是按向高地址方向增长还是向低地址方向增长?
问题来源于一段代码:[code]#include
你可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示: x/ n、f、u是可选的参数。 n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。 f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。 u 表示从当前地址往后请求的字节数,如果不指定的话,gdb默认是4个bytes。u参数可以用下面的字符来代替,b表示单字节,h...
查看栈信息 ————— 当程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。当你的程序调用了一个函数,函数的地址,函数参数,函数内的局部变量都会被压入“栈”(Stack)中。你可以用gdb命令来查看当前的栈中的信息。 下面是一些查看函数调用栈信息的gdb命令: backtrace bt 打印当前的函数调用栈的所有信息。如: (gdb) bt #0 func (n=250) at tst.c:6 #1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:...
记得以前gdb可以直接把一个大结构的所以元素的值列出来。 就是例如struct student *p_student, 直接print p_student就可以看到所以的该结构的元素值。 不用print p_student->;score等一个个看 今天看了半天gdb的help,也没找到。 前辈们提个醒?