0

在尝试了几种替代方法来调试 exe 相当不成功后,决定尝试 gdb 在 windows env 上调试可执行文件。

用于编译 exe 的选项如下所示

/nologo /Z7  /Zi /MT /W3 /GX /O2 /D /DEBUG

这些是我用来将可执行文件加载到 gdb 中的选项

target exec setup
run -debug ( this is the option against which I would like to perform some debugging)

我需要一种将源/符号加载到 GDB 中的方法,因为否则我无法设置任何有效的断点。

这是我尝试过的,以便设置断点(不同于通常的方式)

(gdb) set breakpoint pending on
(gdb) break runInstaller.c:6318
 No symbol table is loaded.  Use the "file" command.
 Breakpoint 2 (runInstaller.c:6318) pending.
 (gdb) pwd
 Working directory C:\
 (gdb) info b
  Num     Type           Disp Enb Address    What
  1       breakpoint     keep y   <PENDING>  WinMain
  2       breakpoint     keep y   <PENDING>  runInstaller.c:6318

我试过这个来加载可执行文件;

(gdb) file setup
 Reading symbols from setup...(no debugging symbols found)...done.

由于上述错误,我意识到可执行文件没有使用调试选项编译,所以它在 gdb 中有一个 gcc -g 等效项,或者有更好的方法将符号/源代码加载到 gdb 中。

编辑1:每当我尝试添加断点时,我都会看到以下错误:

(gdb) b main_helper
 Function "main_helper" not defined.
 Make breakpoint pending on future shared library load? (y or [n]) y
 Breakpoint 5 (main_helper) pending.
4

1 回答 1

0

您当前使用的安装文件没有调试所需的符号表。当您生成可执行二进制文件时,您还需要生成符号表。前任。当我们为 ac 程序生成可执行文件时,我们使用参数 -g 进行编译。

gcc setup.c -o setup -g 

-g告诉 gcc 编译器生成符号表。

于 2016-05-20T08:01:16.323 回答