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间那两个寄存器中是什么值? 晕!!
程序运行到 longjmp后就出现问题,然后就不能再单步调试了 Warning: Cannot insert breakpoint -13. Error accessing memory address 0xbcf594be: Input/output error Single stepping until exit from function siglongjmp, which has no line number information.
原始函数:
int getx(int x,int y)
{
return x+y;
}
使用gdb查看 该函数的汇编代码
(gdb) disassemble getx
Dump of assembler code for function getx:
0x08048470
比方说我用单步step命令进入了一个函数func1 然后想直接跳出这个函数,继续调试主程序,应该怎样做? 目前是重复next命令直到这个函数结束 可是有些函数比较长,就比较麻烦了
[code]
1 #include
在当前的文件中调用了另一目录下一个文件中的类Class1的一个方法Class1::method1,在gdb的时候想跟到method1()里面去,该怎么跟进去呢?