【发布时间】:2020-02-25 06:14:16
【问题描述】:
我有一个没有源代码或符号的应用程序。我想在运行后一段时间加载的模块中设置一个断点。每次都将模块加载到相同的基地址 (0x500000)。我想在运行应用程序之前在这个模块内部设置断点,因为我想避免查找二进制文件中的哪条指令加载模块并在那里设置断点的工作。
我知道 GDB 中的挂起断点,如果我说 break code.c:53 或 break function GDB 将尝试将其评估为一个地址,如果它不能,它会将其标记为挂起并尝试在新模块时重新评估已加载。我目前的问题是,这个功能似乎不适用于绝对地址。如果我想break 0x501000,即使没有地址空间跨越0x501000的模块,GDB也不会将其标记为待处理。
我的问题是这样的:我可以在特定地址设置断点但告诉 GDB 等到该模块加载吗?
【问题讨论】:
标签: debugging gdb symbols reverse-engineering breakpoints