0

我有一个按原样提供的可执行文件。创建者以最小的依赖性和无符号编译它。当我在 gdb 中加载它时,它说:

...(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

先感谢您。

4

1 回答 1

0

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

是什么阻止你这样做?

readelf -h a.out会告诉你地址start是什么。在此处设置断点并继续使用stepior nexti

这实际上需要很长时间,因此更有效的方法可能是从崩溃点向后移动,而不是从start. 也就是说,运行二进制文件直到崩溃点,然后弄清楚你是如何到达那里的,提前设置断点,然后重新运行。反向调试也可能有所帮助。

于 2015-05-17T18:51:49.493 回答