首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用gdb调试exe

使用gdb调试exe
EN

Stack Overflow用户
提问于 2016-05-20 14:23:59
回答 1查看 3.7K关注 0票数 0

在尝试了几种调试可执行文件的方法后,决定尝试gdb来调试windows环境下的可执行文件,但没有成功。

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

代码语言:javascript
复制
/nologo /Z7  /Zi /MT /W3 /GX /O2 /D /DEBUG

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

代码语言:javascript
复制
target exec setup
run -debug ( this is the option against which I would like to perform some debugging)

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

这就是我尝试过的,为了设置断点(不是通常的方式)

代码语言:javascript
复制
(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

我已经尝试这样加载可执行文件;

代码语言:javascript
复制
(gdb) file setup
 Reading symbols from setup...(no debugging symbols found)...done.

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

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

代码语言:javascript
复制
(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.
EN

回答 1

Stack Overflow用户

发布于 2016-05-20 16:01:16

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

代码语言:javascript
复制
gcc setup.c -o setup -g 

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37339350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档