相关疑难解决方法(0)

如何在GDB中自动打印下N行?

我一直试图找到一种方法来自动化GDB中跟踪程序控制流程的进度.

即使只是一种自动执行n命令的简单方法,您也可以查看调用例程的顺序.

我意识到你可以发出n xx是GDB逐步执行的次数的问题,但问题在于它显示的是命令而不是例程的地址!但是如果你n在GDB中手动按下(然后按回车键发出上一个命令),它会显示地址.

我在GDB中尝试了以下内容:

(after setting a breakpoint at say 0x0123456)
b *0x0123456
Run Code Online (Sandbox Code Playgroud)

GDB说<breakpoint 1 at 0x123456>.我键入:

commands 1
n 1000
c
end
Run Code Online (Sandbox Code Playgroud)

但它没有按预期循环,也没有显示地址位置:-(.

任何帮助,将不胜感激!当然必须简单的自动登录命令例程被调用??

trace gdb dynamic call-graph control-flow

16
推荐指数
4
解决办法
2万
查看次数

asm x86中变量声明的顺序?

这段代码:

int main()
{

  char buffer[64];
  int check;
...
Run Code Online (Sandbox Code Playgroud)

如你所见,check声明为AFTER buffer,所以在堆栈中,我们必须在堆栈中有check ABOVE buffer吗?

但是,当我用gdb反汇编(x86)时,这就是我得到的:

- > check0xbffff4f8

- > buffer0xbffff4b8

我的问题:堆栈中是否存在局部变量的特定顺序?

另外,我必须告诉你,我在另一台计算机上尝试了同样的事情(x86也是,gcc编译选项相同,但gdb版本和linux发行版不同),顺序不一样......:S

谢谢 !

PS:如果你想了解更多细节,请看截图:(左边是电脑1,右边是电脑2) 在此输入图像描述

c stack-overflow x86 stack gcc

5
推荐指数
1
解决办法
424
查看次数

标签 统计

c ×1

call-graph ×1

control-flow ×1

dynamic ×1

gcc ×1

gdb ×1

stack ×1

stack-overflow ×1

trace ×1

x86 ×1