我按原样提供了可执行文件。创建者使用最少的依赖项编译它,没有符号。当我在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
先谢谢你。
答案 0 :(得分:0)
我想在汇编代码中逐步调试
是什么阻止你做这件事?
readelf -h a.out
会告诉您start
的地址。在那里设置断点并继续stepi
或nexti
。
这实际上需要很长时间,因此更有效的方法可能会从崩溃点倒退,而不是从start
转发。也就是说,运行二进制文件直到崩溃点,然后弄清楚你是如何到达那里的,先设置一个断点,然后重新运行。 Reverse debugging也可以提供帮助。