我们有一个使用 WinRT(和 XAML、C#)的 Windows 商店应用程序项目。问题是,当抛出一些异常并且我使用 Debug.WriteLine(ex);
记录异常时,没有行号,所以我不知道,实际上在哪里抛出异常。我当然在项目属性> 构建> 高级> 调试信息中设置了“完整”符号的调试配置。
起初我认为它一定是我们项目中的东西。然而,当我从微软下载一些示例并将以下代码放在那里时,异常仍然没有行号。
try
{
throw new Exception("Test");
}
catch (Exception ex)
{
Debug.WriteLine(ex);
}
例如,如果我将上面的代码放入
OnNavigatedTo
方法,我得到:System.Exception: Test
at SDKTemplate.MainPage.OnNavigatedTo(NavigationEventArgs e)
那里没有行号...
在文章、书籍等中没有提到不应该有行号的事实,但也许我遗漏了什么?会不会跟VS的版本有关?我正在使用 VS2013。或者一些系统范围的设置?
最佳答案
发生的情况是 Visual Studio 没有在执行应用程序的路径中包含 .pdb 文件(符号)。在我的机器上,可执行文件的路径如下所示:
C:\Users\msmall\Documents\Visual Studio 2013\Projects\DebugLineNUMbers\DebugLineNUMbers\bin\Debug\AppX
这就是 VS 打包可执行文件并将其部署到本地机器以运行的地方。 AppX 文件夹中没有 .pdb 文件。你最终得到这个:
System.Exception: Test
at DebugLineNUmbers.MainPage.OnNavigatedTo(NavigationEventArgs e)
但是,您可以将 .pdb 从 Debug 文件夹(仅上一级)移动到 AppX 文件夹中,并以行号结束:
System.Exception: Test
at DebugLineNUmbers.MainPage.OnNavigatedTo(NavigationEventArgs e) in
c:\Users\msmall\Documents\Visual Studio 2013
\Projects\DebugLineNUmbers\DebugLineNUmbers\MainPage.xaml.cs:line 36
关于visual-studio - winRT 异常堆栈中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26867558/