如何在VS中调试用gcc编译的项目?

Posted

技术标签:

【中文标题】如何在VS中调试用gcc编译的项目?【英文标题】:How to debug project compiled with gcc in VS? 【发布时间】:2013-12-11 16:08:30 【问题描述】:

我有用 gcc 编译的 DLL 项目(用 fortran、C++ 编写)。我想调试这个 DLL,但我必须附加到在 Windows 上运行的进程(在 Visual Studio 中编译)。我无法在 Visual Studio 中将断点插入 DLL 源。 请问你能帮我一个人吗?

谢谢。

【问题讨论】:

你不能。对于初学者来说,GCC 生成的调试信息格式与 Visual Studio 使用的不同。继续,Visual Studio 不知道 Fortran 是什么,因此无论如何它都无法对调试信息做任何有用的事情,因为它无法使用源代码。 【参考方案1】:

为了在源代码中设置断点,Visual Studio 和任何调试器都必须找到一种方法将源代码行映射到可执行代码中的地址范围。 Visual Studio 使用 PDB 格式来创建这种类型的映射。此文件是在 Visual Studio 中的所有语言的构建期间生成的。 gcc 虽然不会生成此文件,因此 Visual Studio 确实无法将文件中的源代码行映射到生成的可执行文件中有意义的值

【讨论】:

【参考方案2】:

你可以试试http://www.wingdb.com/

除此之外,最简单的方法是使用 Visual Studio 重新构建代码,因为您有源代码。您可以在一个月的评估中获得 IVF,并使用它来生成 DLL 和 pdb 文件。如果它有效并且您喜欢体外受精,请让您的老板给您一份。

另一种选择是在 Linux 环境中使用 ddd。只需在您的 Windows 机器上创建一个 Linux 虚拟机,为 Linux 重建所有内容,获取 ddd,您就可以离开了。

【讨论】:

以上是关于如何在VS中调试用gcc编译的项目?的主要内容,如果未能解决你的问题,请参考以下文章

(Linux)gcc进行优化编译的参数是啥?

gcc 编译生成外部调试语法文件

为啥这段代码不能用 VS2010 和 gcc 4.8.1 编译

vs怎么使用是gcc代码怎么写?

GCC:如何只生成行号调试信息?

用mingw32 gcc 一编译就出一大堆错误,应该怎么解决