【发布时间】:2017-06-09 10:59:29
【问题描述】:
我通过 GCC (v7.1.0)(下面的命令行)编译此类代码。
int func()
{
return 0x1234;
}
int main()
{
func();
return 0;
}
gcc .\001_simpleMain.c -O0 -m64 -g
编译后我运行 WinDbg (10.0),打开可执行文件 (Ctrl+E),程序正在加载。断点在启动过程中被击中,一切正常。 之后我想打开源代码(Ctrl+O)并尝试在 func 方法中放置断点。
WinDlg 告诉我:
*** 错误:模块加载完成,但无法为 G:\Examples\Gcc\a.exe 加载符号
为什么它不起作用?我应该更改编译参数吗?我的 CPU 是 AMD64
【问题讨论】:
-
尝试使用
gdb(如果可用) -
Clang 具有 Microsoft 兼容模式,可将 CodeView 样式的调试信息发送到目标文件中。如果您随后将它们与 Microsoft 的 link.exe 链接,您将拥有 WinDBG 和其他 Windows 调试器所需的 PDB。但是请注意,Microsoft 兼容模式也有其他影响。 clang.llvm.org/docs/MSVCCompatibility.html
标签: c windows debugging gcc windbg