gpt4 book ai didi

linux - gdb 调试剥离的可执行文件

转载 作者:太空宇宙 更新时间:2023-11-04 03:39:44 25 4
gpt4 key购买 nike

我有一个按原样提供的可执行文件。创建者以最小的依赖性和无符号的方式编译了它。当我将它加载到 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

提前谢谢您。

最佳答案

I would like to do step-by-step debugging in the assembler code

是什么阻止你这样做?

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

这实际上会花费非常长的时间,因此更有效的方法可能是从崩溃点向后移动,而不是从开始向前移动。也就是说,运行二进制文件直到崩溃点,然后弄清楚如何到达那里,提前设置断点,然后重新运行。 Reverse debugging也可能有帮助。

关于linux - gdb 调试剥离的可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30285587/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com