GDB有些奇怪之处。我正在研究ELF Linux可执行文件。 我在程序入口点上设置了一个断点。程序在到达断点之前崩溃。 我想从头开始逐步运行我的程序。 如果我在GDB中键入“step”命令,我收到一条错误消息,因为该程序未处于运行模式。 你能告诉我如何才能达到该计划的第一条指令吗?我认为这是动态装载机,但我不知道它在哪里......
答案 0 :(得分:0)
我想从头开始逐步运行我的程序。
这对调试器来说非常困难:执行从未定位的ld-linux.so.2
开始,它自我重定位,初始化libc.so.6
,然后是任何其他直接链接的库,最后将控制传递给{ {1}}入口点。
调试器必须在自行重定位地址之前和之后处理它的事实使得它变得困难/混乱。
幸运的是,即使对a.out
开发人员来说,它通常也是不必要的。您应该放弃这样的想法,即您将能够逐步完成ld-linux
执行,并找出如何通过其他方式调试您实际遇到的任何问题(包括向实际寻求帮助)问题在这里。)