2010-07-27 55 views
2

我是一个专业的软件公司工作。在我以前的公司基本上我正在研究C &关于unix的C++。现在我突然转向Windows上的C++,感觉像我我在一个完全不同的世界。基本上我正在研究一个非常大的应用程序,它完全用C++编写。为了简单起见,我没有源代码。我有应用程序的exe文件和其他一些依赖文件。一个GUI应用程序(几个窗口,报告,图形和巨大的数学计算是由这个应用程序完成)。现在我终于有应用程序的源代码,其中包括一些头文件,一些vcproj文件,一些dsw文件和其他几个我甚至不甚至明白为什么他们在场。 现在,作为我的C++程序员,我的责任是让客户端识别出的所有BUG复制并修复它们。C++从Unix转移到Windows的视觉工作室

如果它在Unix上的一个错误,我可以简单地使用二进制和源代码并运行gdb/dbx,并以某种方式找出问题,如添加一些printf语句。

但是,鉴于我上面提到的文件,可能会在VISUAL STUDIO中的VC++中调试应用程序。 C++程序员是否很难从Unix转移到Windows。 是否有任何好的资源,我可以参考这种改变,我可以很快把握事情?

给出的exe文件和应用程序如何开始通过对C运行的应用程序调试++源代码 - (顺便说一句,我使用VS 2005)

回答

0

编译与调试信息,然后按F5代码(开始调试)。我看不出问题在哪里。在Linux上是一样的。

+0

看来你没有得到我想告诉的点 – Vijay 2010-07-27 07:25:11

1

我明白你的痛苦;几个月前我采取了同样的道路。

你可能知道了,但Visual Studio并不是gcc/g ++的确切替代方案。它嵌入了文本编辑器,调试器等。

通常,您有两个汇编“模式”,调试版本。一步(你可以添加你自己的)

调试模式下,所有的优化被禁用,你可以在调试器中执行程序,使用步骤,添加断点,...

刚启动使用F5键。

上的附加文件的更多注意事项:

在Visual Studio中的世界,.vcproj文件表示“项目”:一堆文件属于同一个项目(源文件,标题,资源,...) 。

A .dsw(我相信当前的.sln文件的旧名称)是“解决方案”文件:一组一个或多个可能具有内部依赖关系的项目。例如:你可以在同一个解决方案中拥有一个库和一个依赖它的软件。所以当你编译整个解决方案时,事情是按照正确的顺序构建的。

+1

调试/发布配置与是否可以调试代码之间没有直接关系。你可以调试发布版的代码 - 但显然如果它经过大量优化,调试可能会有点跳动(这是一个普遍的事实,而不是VS的东西)。发布版本可能会或可能不会被设置为生成完整的符号文件(.PDB文件),但可以启用发布版本而不会显着更改可执行文件的大小。 – 2010-07-27 07:15:20

1

你应该尝试的第一件事是当它运行到附加到该进程(CTR - Alt键 - P和选择过程中)如果你有.pdb(调试信息)文件,你应该能够调试过程而不重新构建它。

如果失败尝试取消选中“要求源文件与原始版本完全匹配”选项工具 - >选项 - >调试

如果失败了,您将不得不再次构建应用程序(打开.sln文件并执行构建),以便二进制文件与您的源文件匹配。

祝你好运。

4

主要区别在于,在Unix上,您将拥有在Windows上无法找到的Makefiles。 Visual Studio在项目和解决方案中组织代码,并且这些项目文件包含编译&链接项目所需的所有信息。

如果你有一个* .sln文件,只需双击它在VS中打开它。然后构建源代码(通常按F6键)并以调试模式运行(通常为F5)。

更多详细信息: 项目是一个源文件的集合,它产生'something',通常是LIB,DLL或EXE。

解决方案是项目的集合。当例如一个项目创建一个由另一个项目使用的LIB。当你设置项目之间的依赖关系时,VS会按照正确的顺序构建项目。

扩展使用:

  • *的.vcproj:对于C/C++源
  • 项目文件* .vcproj..user:包含窗口是在GUI打开。 可以安全地删除。

  • *的.sln:解决方案文件

  • * .NCB:智能感知数据库的解决方案。可以安全地删除。
  • * .suo:包含哪些窗口在GUI中打开。可以安全地删除。

  • * .dsw:Visual Studio 6.0相关文件 - VS2005中未使用。 (由*的.sln IIRC代替)

  • ./Debug/*:有用于调试的所有 中间文件的文件夹共建 (可改变)

  • ./Release/*:文件夹中的所有 对于发行 构建中间文件(可以更改)

这就是我可以在那一刻想到的。

0

VS2005可以将您的dsw文件转换为sln文件,但您需要所有原始VC6文件才能使转换成功。为了调试,请查看下面的msdn链接,我希望这会帮助你。

http://msdn.microsoft.com/en-us/library/sc65sadd.aspx 请选择超级链接“调试本机代码”以获得特定的C++版本。

3

如果您只有.DSW文件而不是.SLN文件,那么这意味着该项目可能是上次使用VC6而不是以后的Visual Studio版本中的一个。

这很遗憾,因为自VC6以来,C++编译器发生了很多变化,而且您可能会发现该项目无法在VS2005中编译而无需对源代码进行一些细微的更改。

您是否有.SLN文件 - 如果是,那么文件顶部的版本号是什么(它是一个文本文件)?如果你没有.SLN文件,你能得到VC6吗?

在我试图将其推向更高版本之前,我总是会尝试使用最佳匹配工具在不熟悉的平台上进行操作。