0

我在“Black App(Universal Windows) C#”项目中提到了一个“Windows Runtime component(Universal Windows) C++”项目。

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

我的VS2019版本16.8.3的选项 在此处输入图像描述

在此处输入图像描述

我发现在运行 C# Metro App RRS 提要时调试 WinRT 组件 DLL并创建了一个名为“.csproj.user”的文件,并将其放在与“.csproj”文件相同的文件夹中。

但它不起作用!

有什么建议吗?

4

1 回答 1

0

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

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

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

于 2020-12-11T11:46:14.233 回答