You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Visual Studio 2017中获取异常堆栈跟踪并定位报错代码?

在Visual Studio 2017中获取NullReferenceException的堆栈跟踪

别着急,VS2017的异常调试功能没藏起来,只是换了个位置而已!针对你关注的NullReferenceException,我给你梳理几个靠谱的方法,轻松拿到堆栈跟踪:

一、让VS在异常抛出时直接中断(最有效)

这是定位异常源头的核心步骤,能让你第一时间锁定问题:

  • 打开Exceptions Settings:可以通过顶部菜单栏的DebugExceptions Settings,或者直接按快捷键Ctrl+Alt+E(这个快捷键记下来,以后调试超方便)
  • 在弹出的窗口里,找到Common Language Runtime Exceptions并展开,往下找就能看到System.NullReferenceException,勾选它的Thrown选项(意思是只要这个异常一被抛出,VS就会立刻暂停程序,而不是等它扩散到崩溃)

二、查看堆栈跟踪的两种场景

1. 程序中断在异常抛出点时

此时直接看右侧的Call Stack窗口:

  • 如果窗口没显示,去ViewOther WindowsCall Stack,或者按Ctrl+Alt+C调出
  • 这个窗口里会清晰列出从程序入口到当前异常点的所有调用层级,每个条目点击就能直接跳转到对应的代码行,一眼就能找到哪段代码触发了空引用

2. 程序已经崩溃后

如果你没来得及设置中断,输出窗口里其实也有堆栈信息:

  • 右键输出窗口→Clear All,清空之前的输出
  • 重新运行程序,等异常出现后,在输出窗口里找以Exception thrown:开头的段落,里面会跟着一串at 命名空间.类名.方法名(参数信息)的行,这就是完整的堆栈跟踪

三、额外小技巧

  • 如果Call Stack里只显示你的代码,看不到.NET框架的调用细节,可以右键Call Stack窗口→Show External Code,就能看到完整的调用链,帮你定位更深层的问题
  • 要是程序崩溃后VS弹出了异常提示框,直接在提示框里勾选NullReferenceExceptionThrown选项,下次运行就会自动中断在抛出点

内容的提问来源于stack exchange,提问作者Be Kind To New Users

火山引擎 最新活动