gdb调试剥离的可执行文件

时间:2015-05-17 09:53:11

标签: linux debugging gdb stripping

我按原样提供了可执行文件。创建者使用最少的依赖项编译它,没有符号。当我在gdb中加载它时,它是sais:

...(no debugging symbols found)...done.

我想在汇编代码中使用可选的退出点逐步调试,以防执行确实留下共享可执行文件。我需要这个的原因是因为我有一个可执行文件的段错误,我没有其他方法来解决这个问题。

我创建了一个极简主义的例子(simple.c ++):

#include <stdlib.h>
#include <iostream>

int main () {
  std::cout << "Hello World!" << std::endl;

  return EXIT_SUCCESS;
}

并使用以下命令编译:

g++ -static -O3 simple.c++ -o simple
strip simple

先谢谢你。

1 个答案:

答案 0 :(得分:0)

  

我想在汇编代码中逐步调试

是什么阻止你做这件事?

readelf -h a.out会告诉您start的地址。在那里设置断点并继续stepinexti

这实际上需要很长时间,因此更有效的方法可能会从崩溃点倒退,而不是从start转发。也就是说,运行二进制文件直到崩溃点,然后弄清楚你是如何到达那里的,先设置一个断点,然后重新运行。 Reverse debugging也可以提供帮助。