手动告诉GDB加载可执行文件的地址

时间:2018-02-10 14:44:40

标签: gdb

我有一个C ++应用程序,不知何故,gdb(我正在使用mingw-w64版本)似乎总是对主要可执行文件的加载地址感到困惑。如果我尝试在某个函数或文件+行号上插入断点,gdb会尝试在错误的地址处执行该断点,并且断点不起作用。它也不能产生回溯。通过添加printf显示某个函数的地址,并将其与一个gdb与break someFunction(或print &someFunction)一起使用,我可以看到它使用的地址是错误的。另一方面,对于位于DLL中的函数,gdb可以成功插入断点或产生回溯(至少在达到可执行文件中的函数之前)。

我不知道为什么会这样,但无论如何能够使用调试器会很好。假设可执行代码段的地址错误,我是否可以通过某种方式将其调整到正确的位置?我尝试过的gdb版本是7.9和8.0.1。

0 个答案:

没有答案