【问题标题】:The break point in c++/WinRT Component code is not triggeredc++/WinRT 组件代码中的断点未触发
【发布时间】:2021-01-18 23:36:07
【问题描述】:

我正在尝试将 macOS 应用迁移到 UWP

有一些c++代码需要复用,我把它们放在一个WinRT/c++组件中。

然后我将它添加到 UWP 应用程序的程序集引用并将其设置为混合调试类型。 我在 c++/WinRT 组件代码中设置断点并重建项目。

最近,我打开 UWP 应用程序并构建/运行并调用 WinRT/C++ 组件,一切正常,只是没有触发 c++ 代码中的断点

欢迎您的评论

------------------------------------更新问题(2020 年 10 月 5 日)

我尝试创建一个简单的组件并添加到一个空白的 c# 应用程序 它可以正常工作并正确调用组件。 但在 WinRT/c++ 代码中仍然无法触发断点

---------------------------------更新问题(2020 年 10 月 4 日)

c++/WinRT 组件

c# 应用

----------------------更新的问题(2020 年 10 月 3 日) WinRT/C++ 组件代码断点

一个新项目只需调用 WinRT/C++ 组件


【问题讨论】:

  • 你好 Arachide,确保你在调试模式和 Visual Studio 下运行,你可以禁用断点触发关闭,确保在 Build 中让 Visual Studio 输出。 ibb.co/FWwHXZq
  • 是的,我处于调试模式,可以设置/删除断点
  • 是的,我处于调试模式,可以在 c++/WinRT 代码中设置/删除断点,但仍然无法触发它们
  • 你好 Arachide,你能分享一个 Debug 和 Build in 解决方案的截图吗?
  • 如果要在 C++/WinRT 组件中触发断点,组件项目应与 UWP 应用位于同一解决方案中。然后将调试器类型设置为 Mixed(Managed and Native)。

标签: c# c++ uwp windows-runtime


【解决方案1】:

经过搜索和测试,我得出了这些想法和解决方案,首先,从最简单的开始。

请确保您没有自己禁用该断点,您可以使用键盘快捷键 Ctrl + F9 或右键单击任何断点并单击禁用断点。

您可以使用 -g 命令参数或标记来编译您的解决方案,您可以在解决方案属性、调试中找到它。

最后一个是更改调试器类型,您可以将其从混合切换到混合(托管和本机)、仅托管或仅本机,反之亦然。

我会为你搜索和测试更多。

【讨论】:

  • 非常感谢,我将调试类型设置为托管/原生/混合,只能在托管类型触发断点
  • 我尝试了你提到的所有项目,仍然无法在c#应用项目中触发原生或混合类型的断点(请参考更新的问题截图)
  • 你好 Arachide,请给我一些时间,我会弄清楚为什么会这样。
【解决方案2】:

这是来自@YanGu - MSFT 的答案

如果要在 C++/WinRT 组件中触发断点,则 组件项目应与 UWP 应用位于同一解决方案中。然后 将调试器类型设置为混合(托管和本机)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-22
    • 2013-03-01
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多