【发布时间】:2017-02-15 17:36:37
【问题描述】:
我开发了一个 UWP 应用,它使用了很多 NuGet 包(MvvmLight、SQLite、...)和其他 >资源(Syncfusion 控件)。
我在 Store 应用程序中遇到了一个错误,该应用程序已发布用于测试,当我在“Debug”模式下构建应用程序时不存在该错误。 p>
所以,我尝试在“Release”模式下进行调试,选中“Compile with .NET Native tool chain”和“Optimize”选项代码”。构建成功结束,但我在应用程序的主页上遇到了 Syncfusion 控件 (SfDataGrid) 的异常。我想使用断点来了解会发生什么,但是当我在“发布”模式下构建应用程序时它们被停用了。
如果我在“调试”模式下构建应用程序,并选中相同的选项(“使用 .NET Native 工具链编译”和“优化代码” "),我没有遇到与 Syncfusion 控件相同的错误,并且定义的 断点 保留得很好。
所以我不知道如何解决我的问题:
- 如果我创建一个新解决方案并在“发布”模式下构建它,断点会得到很好的保留,我可以调试代码
- 如果我在“发布”模式下构建 Syncfusion 示例,结果是一样的:断点保存完好,我可以调试代码
- 我比较了应用的“构建”参数和其他的:它们是一样的
- 我还查看了 Visual Studio“options”中的“Just-in-Time”页面。我收到以下错误:“另一个调试器已将自己注册为即时调试器。要修复,请启用即时调试或运行 Visual Studio 修复。”。我试图“修复”Visual Studio,但总是一样的......
你有什么解释吗?如何在“发布”模式下调试我的应用程序?
[编辑 1]:在进一步调查后添加一些细节
我的应用基于一个类似 Template10 的“模板”,名为 Nentang。项目的结构是相同的,它们共享很大一部分引用或 NuGets 包。 但是,如果我比较“空白”Nentang 的构建结果和我的解决方案,会有一些我不明白的差异:
- 如上所述,在我的应用程序中,断点和调试在“发布”模式下不起作用,我可以看到几乎所有模块都没有任何“符号文件”:
=> 只有“ntdll.dll”和“KernelBase.dll”链接到本地目录中的 pdb 文件:“C:\Users \myname\AppData\Local\Temp\SymbolCache"
- 在“空白”Nentang 应用程序上,断点和调试在“发布”模式下运行良好,我可以看到几乎所有模块都有一个“符号文件”:
=>所有一半的模块都链接到“project”目录中的同一个文件:“C:\Projects\Samples... \Nentang.UWP\bin\x64\Release\AppX\Nentang.UWP.pdb"
=> 另一个 四分之一的模块 链接到“system”目录的同一文件:“C:\Program Files (x86)\ Microsoft SDKs\Windows Kits\10\ExtensionSDKs\Microsoft.NET.Native.Framework.1.3\1.3\x64\ret\Native\SharedLibrary.pdb"
=> 其他模块未链接到符号文件:“ntdll.dll”和“KernelBase.dll”
就是这种情况如何恢复我的项目的“符号文件”?
我还在我的解决方案的属性中注释了一个“奇怪”的参数,不存在的是 Nentang 属性: 有这个参数:“f:\dd\ndp\fxcore\CoreRT\src\System.Private.CoreLib\src\System\Runtime\ExceptionServices\ExceptionDispatchInfo.cs”
这是什么意思?它可以解释我的问题吗?
【问题讨论】:
-
当您将鼠标悬停在禁用的断点上时,IDE 将显示带有附加信息的工具提示。我猜你没有生成调试信息(PDB 文件)。 PDB 需要将源代码位置映射到二进制文件中的地址。
-
感谢您的反馈@IInspectable。错误是“当前不会命中断点。没有为此文档加载任何符号。”。但是这怎么可能,知道构建参数在不同的项目中是相同的呢?
-
如果未加载调试符号,则它们要么位于调试器不查找它们的位置,要么不存在。发布配置通常不会构建调试信息。请参阅Specify Symbol (.pdb) and Source Files in the Visual Studio Debugger 了解更多信息。
-
我尝试清理解决方案,并删除每个项目的 bin/object 文件夹,但问题始终相同。我会看看你的链接,看看它是否有助于我理解问题。
-
@IInspectable 我无法解决我的问题,但我在主要描述中添加了一些关于“模块”的详细信息。这能帮助你给我回复吗?
标签: c# debugging uwp release breakpoints