我正在使用Windows 8.1 64位和Visual Studio 2013 Ultimate。 我正在将一款使用C ++,OpenGL和SDL的程序从Linux移植到Windows。 我已经通过cmake在64位Windows上自定义编译了适当的库。 当我从Visual Studio运行该程序时,IDE显示有头文件损坏。 这不足为奇,因为我使用指针来实例化对象,并且我正在使用原始指针。为了论点的缘故,我打算稍后使用智能指针进行更改。现在我要做的是boost魔法。
与此同时,我使用我的Linux计算机通过Valgrind检测任何内存泄漏,但没有发现严重问题。 然后我继续使用CppCheck,但也没有发现严重问题。 可能我太宽容了,Windows可能会比Linux更认真地处理一些不太严重的事情,这令人惊讶,因为MSVC通常比GCC更宽容。
所以,该程序在Linux上运行正常,在Windows上却不行(太棒了!)并且Visual Studio通过抛出异常并没有提供帮助,这让我更加讨厌Windows。 我开始在谷歌上寻找解决方案,找到了一个叫做gflags或page helper的工具,于是我安装了调试工具并尝试启动gflags,但我不知道如何使用它! 我后来发现您必须使用另一个名为adp的工具,然后将gflags附加到该工具上,因此当我启动adp时,它就会崩溃。 现在我不知道该怎么办了,即将放弃移植(这很有趣,因为许多人抱怨从Windows到Linux移植程序很难,而相反则是真的)。
所以,现在我向这个社区求助:如何调试/诊断仅在Windows上发生的堆损坏错误? 我真的应该使用gflags还是依靠直觉解决呢?