我必须将c++ Win32控制台应用程序移植到WEC7。在我修复了一些构建和链接错误之后,我能够创建一个在目标上运行的可执行文件。但是我不能用Visual Studio调试这个应用程序,因为没有碰到断点,尽管相应的行肯定被执行了。
为了进一步研究我的问题,我创建了两个新项目:
- Win32项目
Win32智能设备项目
都包含以下代码:
#include "stdio.h"
void main(void)
{
int i=0;
while(1)
{
printf("i=%dn",i);
i++;
}
}
在这一点上,我可以调试两个项目,一个在我的笔记本上运行Windows 7,另一个在我的目标上运行WEC7。现在我已经将平台解决方案从项目1 (Win32项目)更改为我的目标:
从Win32平台复制设置
设置Debug信息格式从4到/Zi(不知道4是从哪里来的)
添加了一些WEC7预处理器定义
将程序部署到目标并且工作正常(计数器在控制台中打印),与项目2
没有区别尝试调试程序,但是计数器和printf的断点没有命中
我检查了以下设置:
解决方案配置设置为Debug
优化被禁用
生成调试信息设置为Yes
比较了项目1(我的"转换"版本)和项目2 (Win32智能设备项目)之间的链接器的命令行,但它们是相同的->更新:实际上它们根本不相同。
不知道我第一次比较了什么,但是在我更新设置后它工作得很好。
我已经安装了以下的Visual Studio更新:
- SP1
Windows Embedded Compact 7 ATL Update for Visual Studio 2008 SP1 (http://support.microsoft.com/kb/2483802/de)
Windows Embedded Compact 7的Visual Studio 2008更新(http://support.microsoft.com/kb/2483802/de)
我需要更改特定设置吗?还是我需要改变我的方法?
我主要做基于模型的软件设计(Mathworks Embedded Coder, dSPACE Targetlink),所以我不熟悉Visual Studio和WEC7的具体特点。我将非常感谢您的帮助。
这解决了我的问题:
- 我为WCE平台创建了一个新项目(使用模板),并检查调试是否有效。
- 然后我通过比较项目属性中的编译器和链接器的"命令行"来检查应该在实际项目中使用哪些选项。
有几个不同之处,在我清理它们之后,我的项目工作得很好。
Thx @brightstar
VS2008有几个更新,使其在Windows Embedded Compact 7上调试。你安装了吗?
例如有http://www.microsoft.com/en-us/download/details.aspx?id=11935