winRT上异常堆栈中的行号

时间:2014-11-11 14:47:25

标签: visual-studio debugging windows-runtime windows-store-apps symbols

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

起初我认为它必须是我们项目中的一部分。 HOwever,当我从microsoft下载一些样本并放入以下代码时,异常仍然没有行号。

        try
        {
            throw new Exception("Test");
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
        }

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

System.Exception: Test
   at SDKTemplate.MainPage.OnNavigatedTo(NavigationEventArgs e)

那里没有行号......

在文章,书籍等中没有提到这样的事实,即应该没有行号,但也许我错过了什么?它可以与VS版本相关吗?我正在使用VS2013。或者一些系统范围的设置?

3 个答案:

答案 0 :(得分:4)

发生的事情是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

答案 1 :(得分:1)

也许这篇文章可以提供帮助:Line numbers

答案 2 :(得分:1)

我无法添加评论,所以这里是一个新的答案,它会增加被接受的答案。

导航至:

Project-> [Project Name] Properties ...-> Build Events-> post-build event命令行:

添加以下行以将pdb文件复制到AppX目录:

xcopy /y "$(TargetDir)$(TargetName).pdb" "$(TargetDir)\AppX"