2

我正在为那些在 Visual Studio2013 中嵌入 Windows XP 进行开发,然后在 Visual Studio 2010 中调试的人寻找提示。

其原因在此Stack Overflow Link关于该主题的讨论。

本质上远程调试协议在VS2010之后发生了变化,使用新VS2013协议的新msvsmon.exe不支持XP嵌入式调试。所以我们被迫采用两种 IDE 解决方案,一种用于构建,另一种用于调试。VS2013 用于构建,VS2010 用于启动远程调试会话。

关于同时购买 VS2013 和 VS2010 的要求存在一些错误信息。从前面提到的链接中可以看出,可以免费获得 VS2010 调试环境。我能够验证组件的免费下载,但还没有时间验证调试环境是否有效。我使用的环境由 VS2013 的许可副本和 VS2010 的许可副本组成。

以下是在以前的 VS6 msvsmon.exe 环境中进行远程调试时我没有看到的两个初始问题:

1)用VS2013构建项目,VS2010不想打开*.sln文件。如果我打开我们从 VS2010 移植的 VS6 .dsp/.dsw 会执行“一次性转换”,这会破坏我精心构建的 VS2013 构建项目。看来我将不得不构建两个不同的解决方案空间,一个名为 SOLUTION_NAME_VS2013,另一个名为 SOLUTION_NAME_VS2010。我很想知道是否有更优雅的解决方案来管理具有两个不同“Highlander”(只能有一个)IDE 的一组 BUILD 文件。

2)远程启动项目时,如果它崩溃了,我会在 Win2012 调试主机(运行 VS2010)上看到那些烦人的“您的程序已崩溃”对话框之一,该对话框正在捕获来自调试器的崩溃信号。大约 30% 的时间,它检测到正在运行的 VS2010 实例,70% 的时间没有。 崩溃对话框

3) msvmon 超时(需要重新启动)并且需要额外的时间/鼠标点击来设置旧的 vs6 msvcmon.exe

我想知道其他 Windows Embedded 开发人员是否已经为这些问题找到了优雅的解决方案。如果我发现更多提示,我会在这里发布我发现的内容。


4

1 回答 1

1

对于问题 #1:无法在 VS2010 中读取 VS2013 *.sln 文件

问题是 Visual Studio 2010 的版本必须至少是 SERVICE PACK1。早期版本的 Visual Studio 2010 无法读取 VS2012/VS2013/VS2015 解决方案文件。

工作与非工作 VS2010 的屏幕截图

对于问题 #2:您的程序已崩溃对话框,阻止信号到达调试器

这个Stack Overflow 链接很有帮助。有多种方法可以抑制“您的程序已崩溃”对话框。就我而言,用户可能需要在生产系统上调试新应用程序,因此全局更改设置并不理想。

我从这个 Raymond Chen 链接中选择解决方案, 它允许我在应用程序的基础上禁用对话框。因为我通常可以访问源代码,所以我正在调试这对我来说是最好的解决方案。

DWORD dwMode = SetErrorMode(SEM_NOGPFAULTERRORBOX);
SetErrorMode(dwMode | SEM_NOGPFAULTERRORBOX);

我仍然偶尔会看到一个问题,即 Windows 运行时在崩溃时看不到正在运行的调试器实例并且想要启动一个新实例。这似乎发生在大约 30% 的时间里。当我弄清楚是什么原因时,我会在这里更新它。

最后,新的远程调试客户端更改为msvmon.exe提高了安全性。为了节省额外的鼠标点击,在远程 Windows Embedded XP 客户端上运行以下命令很有用:

"Path\to\msvsmon.exe" /anyuser /noauth /nosecuritywarn /timeout:2147483646

/noauth/anyuser要求/nosecuritywarn。_ /timeout最大值使调试器客户端在空闲时间约一小时后终止。如果您的工作日要花在调试上,您不希望它在咖啡/重建所有中断后超时。

于 2016-05-27T11:48:33.167 回答