如何在每次地址不同时使用strace -i进行调试

时间:2013-06-11 12:49:19

标签: gdb strace

[b77d0424] open(“etc / shadow”,0_RDONLY)= -1 EACCESS(权限被拒绝)

每次我将[b77d0424]改为另一个地址

我不能使用gdb b * 0xb77d0424然后c来查找lib64 / libc.so.6

在linux编程书中提到的似乎不一样

在虚拟框中运行ubuntu 13.04后

1 个答案:

答案 0 :(得分:4)

  

每次我将[b77d0424]改为另一个地址

这是因为address space layout randomization而发生的,你可以使用setarch -R命令禁用它。

GDB 默认禁用地址随机化,但是你在GDB和strace下获得的相同地址的可能性非常小,因为这两个工具下的执行环境是完全不同的。您实际上并不需要 来查找strace下的地址,您可以在GDB中找到它:

  • catch syscall open
  • run

您现在正在查看您的程序执行的open系统调用之一。使用continue,直到您感兴趣的那个为止。现在使用info registers查找第一个参数的地址,并在该地址上设置一个观察点。