【问题标题】:VS2008 Debug WEC7 Application - Breakpoint will not currently be hit. No executable code is currently loaded at this functionVS2008 调试 WEC7 应用程序 - 当前不会命中断点。此函数当前未加载任何可执行代码
【发布时间】:2014-08-08 13:38:25
【问题描述】:

我必须将 C++ Win32 控制台应用程序移植到 WEC7。在我修复了一些构建和链接错误之后,我能够创建一个在目标上运行的可执行文件。但我无法使用 Visual Studio 调试该应用程序,因为没有命中断点,尽管相应的行已明确执行。

为了进一步调查我的问题,我创建了 2 个新项目:

  1. Win32 项目

  2. 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 更新:

我需要更改特定设置吗?还是我需要改变我的方法?

我主要从事基于模型的软件设计(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


【解决方案1】:

这解决了我的问题:

  1. 我为 WCE 平台创建了一个新项目(使用模板)并检查了调试是否有效。
  2. 然后,我通过比较项目属性中编译器和链接器的“命令行”来检查在我的实际项目中应该使用哪些选项。

有几个不同之处,在我清理它们之后,我的项目运行良好。

谢谢@brightstar

【讨论】:

    【解决方案2】:

    VS2008 有几个更新可以在 Windows Embedded Compact 7 上进行调试。您安装了吗?

    例如有 http://www.microsoft.com/en-us/download/details.aspx?id=11935

    【讨论】:

    • 它以指出特定系统(Windows Embedded Compact 7)上的特定调试器(VS2008)的已知错误的方式提供了对该问题的答案,该错误完全符合描述为错误(没有达到断点)甚至提供了下载链接。那你为什么要删除它?而且我没有足够的声誉将其作为主要帖子下的表扬。
    • @Fabian 我已经安装了您链接的这个特定更新,但我找不到与我的问题相关的任何其他更新。
    • @ChristianRießland 你舒尔,你运行的是正确的 exe 吗?如果两个程序集确实具有相同的名称,则可能会执行错误的程序集,执行正确的输出但不会遇到断点。
    • 答案在哪里说明了已知错误?它只是说“哦,有一些更新;这是一个链接”。不仅强烈不鼓励仅链接的答案,而且此答案不回答问题。它只提供了一个潜在的答案。可能有用的建议,但不是答案。这些应该作为 cmets 发布。
    • @CodyGray 好的。那么告诉我,当试图发布潜在的分析器或可能的建议时,协议是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 2015-12-28
    • 2013-02-18
    • 1970-01-01
    • 2011-03-02
    相关资源
    最近更新 更多