如何在GCC中编译C程序以在WinDbg中启用调试?

Jac*_*cek 5 c windows debugging gcc windbg

我通过GCC(v7.1.0)(下面的命令行)编译了此类代码。

int func()
{
    return 0x1234;
}

int main()
{
    func();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

gcc。\ 001_simpleMain.c -O0 -m64 -g

编译后,我运行WinDbg(10.0),打开可执行文件(Ctrl + E),正在加载程序。在启动过程中命中断点就可以了。之后,我想打开源代码(Ctrl + O)并尝试将断点放在func方法内。

WinDlg告诉我:

***错误:模块加载已完成,但无法为G:\ Examples \ Gcc \ a.exe加载符号

为什么不起作用?我应该更改编译参数吗?我的CPU是AMD64

And*_*ing 4

由于您使用的是带有 WinDbg 的 Windows,因此您需要专有的PDB 文件,其中包含来自 Microsoft 的调试器工具的调试信息。

\n\n

gdb例如,GCC 将生成可供调试器(在 Linux 中众所周知)使用的调试信息。

\n\n

海湾合作委员会-g:

\n\n
\n

以操作系统\xe2\x80\x99s 本机格式(stabs、COFF、XCOFF 或 DWARF)生成调试信息。GDB 可以使用此调试信息。

\n
\n\n
\n\n

如果您已经使用 MinGW 或 Cygwin,则可以gdb从那里使用,因为它在 MinGW/Cygwin 环境中可用。如果没有,有几种gdb适用于 Windows 的实现可用。

\n