UWP 应用的堆栈跟踪中的行号

Posted

技术标签:

【中文标题】UWP 应用的堆栈跟踪中的行号【英文标题】:Line numbers in stack traces for UWP apps 【发布时间】:2016-07-03 00:10:08 【问题描述】:

我在 Visual Studio 2015 中创建了一个空白的通用 Windows 应用项目。

我添加了类似的内容:

try 
    string foo = null;
    int len = foo.Length;
 catch (Exception ex) 
    System.Diagnostics.Debug.WriteLine(ex);

我得到如下堆栈跟踪:

Exception thrown: 'System.NullReferenceException' in TestStackTraces.exe
System.NullReferenceException: Object reference not set to an instance of an object.
at TestStackTraces.App.OnLaunched(LaunchActivatedEventArgs e)

即,没有行号。

如何显示行号?

【问题讨论】:

看看这个答案:***.com/questions/3328990/… @TroelsLarsen,实际上,在 WIn10/UWP 上不再支持此功能。 ***.com/questions/34833573/… 这是因为 UWP 中的 U。通用意味着您的目标是 CLR 的 .NETCore 版本,目前是 CoreCLR。它更小,因此更容易移植到不同的平台。两者都导致缺少的功能,您没有可以在运行时从 PDB 文件中读取行号信息的 COM 组件。桌面版 CLR 中的 Diasymreader.dll。 corefx 团队中似乎没有人知道这一点,嗯,有点吓人。微软丢失了很多基础知识,营业额很高,也许他们应该问更多 SO 问题:) 【参考方案1】:

这似乎不再受支持。我在这里重新发布我的答案,因为当我搜索另一个问题的答案时,很难在搜索结果中找到它。希望这个问题能帮助人们更轻松地找到这些信息。

参考:windows 10 exceptions not including line numbers

其他信息:

请参阅corefx #1420 和相关的corefx #1797。

另外,在 SO 上有这个参考:How to get StackTrace without Exception in Windows Universal 10 App

【讨论】:

以上是关于UWP 应用的堆栈跟踪中的行号的主要内容,如果未能解决你的问题,请参考以下文章

Proguard 不保留堆栈跟踪中的行号和方法名称

Kotlin 代码堆栈跟踪显示 Java 行号

在堆栈跟踪中获取 VB.NET 行号

启用 ASP.NET 模拟时,异常堆栈跟踪中缺少行号

如何使用带有行号信息的 gcc 获取 C++ 的堆栈跟踪?

csharp 获取具有错误文本,方法和行号的完整堆栈跟踪