winRT 异常堆栈中的行号

Ond*_*rka 4 debugging symbols visual-studio windows-runtime windows-store-apps

我们有一个使用 WinRT(和 XAML、C#)的 Windows 商店应用程序项目。问题是,当抛出一些异常并且我使用 记录异常时Debug.WriteLine(ex);,没有行号,所以我不知道实际上抛出异常的位置。我当然在项目属性> 构建> 高级> 调试信息中设置了“完整”符号的调试配置。

起初我认为它一定是我们项目中的东西。然而,当我从微软下载一些示例并将以下代码放在那里时,异常仍然没有行号。

        try
        {
            throw new Exception("Test");
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
        }
Run Code Online (Sandbox Code Playgroud)

例如,如果我将上面的代码放入OnNavigatedTo方法中,我会得到:

System.Exception: Test
   at SDKTemplate.MainPage.OnNavigatedTo(NavigationEventArgs e)
Run Code Online (Sandbox Code Playgroud)

那里没有行号...

在文章、书籍等中没有提到不应该有行号的事实,但也许我遗漏了什么?会不会跟VS的版本有关?我正在使用 VS2013。或者一些系统范围的设置?

Mat*_*all 5

发生的情况是 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)
Run Code Online (Sandbox Code Playgroud)

但是,您可以将 .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
Run Code Online (Sandbox Code Playgroud)