在尝试了几种替代方法来调试 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.