【问题标题】:The break point in a "WinRT Component DLL" is not hitting while debugging a C# UWP app调试 C# UWP 应用时未命中“WinRT 组件 DLL”中的断点
【发布时间】:2021-03-22 19:35:59
【问题描述】:

我在“Black App(Universal Windows) C#”项目中引用了“Windows Runtime component(Universal Windows) C++”项目。

我在“Windows 运行时组件(通用 Windows)C++”项目中设置了一个断点。但是断点永远不会命中,我无法从 C# 进入 C++ 代码。

我的VS2019版本16.8.3的选项

我找到了Debugging a WinRT Component DLL while running a C# Metro App RRS feed,并创建了一个名为“.csproj.user”的文件,并将其放在与“.csproj”文件相同的文件夹中。

但它不起作用!

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    一般我遇到这个问题是因为调试器在错误的模式下调试。例如,我正在尝试调试托管代码,但调试器附加在本机调试模式下。自动启动调试器时不知道如何选择调试模式。但是,如果您在没有调试器的情况下启动应用程序,然后选择“调试 -> 附加到进程”,您将能够在选择进程时选择所需的调试模式。 “自动确定要调试的代码类型”通常对我不起作用。对我来说,调试 Native 和 Managed 似乎很受欢迎。所以有时我经常只选择一种模式,直到断点在我需要的模式下正常工作。

    今天我发现了一个新案例,我无法在代码中打断点。所以我在这里添加信息。调试 C/CLI 代码时,我无法让断点在 Visual Studio 2019 中保持红色(活动)。它是原生 C++ 和 C# 的混合体。为了让事情正常工作,我必须在工具 -> 选项 -> 调试 -> 常规下禁用“启用编辑并继续”。此外,当我附加到该过程时,我使用了“托管兼容模式”以及我正在构建的托管 .net 版本。所以“托管(.Net 4x)代码”。我不确定最后一次更改是否必要。但我想在我忘记它之前更新它。

    我有时无法设置断点的第二个原因是加载的代码与我的符号不匹配。我使用调试窗口“模块”来查看符号是否已加载。如果没有,我会检查加载文件的时间和日期是否与我刚刚构建的相符。未加载符号时,右键单击模块并选择“符号加载信息...”也很有用。因为这列出了编译器在哪里搜索符号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-18
      • 2021-09-26
      • 2010-10-18
      • 1970-01-01
      • 1970-01-01
      • 2011-10-30
      • 1970-01-01
      相关资源
      最近更新 更多