1

我在 Code::Blocks IDE 中有一个简单的 Hello World 项目,我正在使用英特尔 C++ 编译器进行编译。

我在项目构建设置中设置了编译器选项“/Zi”,因此我可以使用断点调试应用程序。但是,从未达到断点。似乎在对象中找不到调试符号。

但是,当我更改为使用 gcc 编译器时,它们会正确到达。

我在这里想念什么?这不应该按原样工作吗?

[更新]

似乎可以在 Linux 上工作,但不能在 Windows 上工作。我使用英特尔编译器和正确的编译器选项对一个简单项目进行了相同类型的测试,并且可以到达断点。是否有某些原因 Windows 会出现问题?

4

1 回答 1

1

是否有某些原因 Windows 会出现问题?

在 UNIX 上,调试信息通常是完全文档化的,并且通常是标准的(例如 Linux 使用DWARF)。

在 Windows 上,Microsoft 编译器使用 .PDB(程序数据库)文件,这些文件完全没有文档记录并且是专有的。GDB 不能使用它们。

我不知道英特尔编译器生成什么调试信息格式,但很可能该格式只能idb.

实际上,您不能将 GDB 与任何 Microsoft 或 Intel 编译器混合和匹配。

于 2014-05-08T03:57:59.857 回答