我有一个Windows 10通用应用程序,在Exception对象.ToString()方法中不包含行号。
如果我有像
这样的方法private void ThrowException()
{
try { throw new Exception("Test"); }
catch (Exception e) { Debug.WriteLine(ex.ToString()); }
}
当我检查输出时,我看不到抛出异常的行号。我在项目中添加了一个Post Build事件:
xcopy $(ProjectDir)$(OutDir)*.pdb $(ProjectDir)$(OutDir)AppX\*.pdb
pdb文件位于Debug文件夹中,但不在AppX文件夹中。
我错过了什么?感谢名单,
修改
我创建了一个新项目来测试它。我有一个页面(MainPage.xaml)。以下是文件背后的代码:
using System;
using Windows.UI.Popups;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
namespace App2
{
public sealed partial class MainPage : Page
{
public MainPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
ThrowException();
}
private async void ThrowException()
{
try { throw new Exception("Test"); }
catch (Exception ex) { await new MessageDialog(ex.ToString()).ShowAsync(); }
}
}
}
和以前一样,我添加了post build事件宏:
xcopy $(ProjectDir)$(OutDir)*.pdb $(ProjectDir)$(OutDir)AppX\*.pdb
我在Release配置中编译并保证"使用.NET本机工具链编译"选项已被选中。
C:\ VS2015 \ App2 \ App2 \ bin \ x86 \ Release \ AppX中的Appx文件夹确实存在App2.dll和App2.pdb文件。
当我运行应用程序时,我在弹出对话框中得到以下内容:
System.Exception: Test
at SharedLibrary!<BaseAddress>+0x122d16
感谢名单
编辑2
我也在没有本机工具链的Debug中尝试过这个。在这种情况下,我没有在Debug
下的AppX文件夹中看到pdb文件在这种情况下的信息是:
System.Exception: Test
at App2.MainPage.<ThrowException>d_2.MoveNext()
感谢名单
答案 0 :(得分:2)
我在原始答案中犯了一个错误,并且使用了即时窗口输出,而不是代码可以从异常对象获得的内容。
经过更多研究后,似乎不再支持此了。
请参阅corefx #1420及相关的corefx #1797。
此外,还有关于SO的参考:How to get StackTrace without Exception in Windows Universal 10 App