【发布时间】:2014-08-08 13:38:25
【问题描述】:
我必须将 C++ Win32 控制台应用程序移植到 WEC7。在我修复了一些构建和链接错误之后,我能够创建一个在目标上运行的可执行文件。但我无法使用 Visual Studio 调试该应用程序,因为没有命中断点,尽管相应的行已明确执行。
为了进一步调查我的问题,我创建了 2 个新项目:
Win32 项目
Win32 智能设备项目
两者都包含以下代码:
#include "stdio.h"
void main(void)
{
int i=0;
while(1)
{
printf("i=%d\n",i);
i++;
}
}
此时我可以调试两个项目,一个在 Windows 7 的笔记本上运行,一个在 WEC7 的目标上运行。现在我已经将平台解决方案从项目 1(Win32 项目)更改为我的目标:
从 Win32 平台复制设置
将调试信息格式从 4 设置为 /Zi(不知道 4 来自哪里)
添加了一些 WEC7 预处理器定义
将程序部署到目标并且工作正常(计数器打印在控制台中),与项目 2 没有区别
试图调试程序,但是计数器和printf处的断点没有命中
我检查了以下设置:
解决方案配置设置为调试
优化被禁用
生成调试信息设置为是
比较了项目 1(我的“转换”版本)和项目 2(Win32 智能设备项目)之间链接器的命令行,但它们是相同的 -> 更新:实际上它们在全部。不知道我第一次比较了什么,但在我更新设置后它运行良好。
我已安装以下 Visual Studio 更新:
SP1
适用于 Visual Studio 2008 SP1 的 Windows Embedded Compact 7 ATL 更新 (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 平台创建新项目(使用模板)并检查是否可以在其上进行调试。然后检查在您的实际项目中应该使用哪些选项。最简单的方法是在项目属性中查看编译器和链接器的“命令行”。可能是 pdb 文件路径的问题?
-
@CodyGray 对不起我的英语不好,当然我的意思是“..在我修复了一些之后..”。此外,计数器和 printf 都在循环内,并且正在执行代码,但不会命中断点。
-
@marcin_j 我为 WCE 创建了一个新项目并且调试工作正常,但是编译器和链接器的“命令行”与“转换”版本相同。
标签: c++ debugging visual-studio-2008 windows-ce windows-embedded-compact