一、问题描述
编写电脑应用程序时,经常会发生bug和异常退出情况,常见的应对方法是在程序可能发生异常的代码块增加
try{}catch(){}
结构来进行报错显示和处理报错后的逻辑程序操作,但是我们常常还会遇见一些常见问题,无法以常见方法知道异常出现在代码哪里或是由于什么外界原因引起的,如下:
- 应用程序无报错信息直接退出;
- 在IDE编辑器debug运行时,直接连IDE和代码项目直接退出;
- IDE调试异常信息定位和描述不够清晰;
- 在电脑系统上运行,需要与操作系统交互和其他IO外设和数据流进行交互,异常退出后,无法判断程序退出是否与程序自身和外界影响相关!
- Windows系统上运行时,直接整个系统关闭!
☀️所以,当我们不知道异常信息的描述和发生的位置时,也不知道如果在代码上加上trycatch语句块,或者判断是否为外界影响,所以异常信息追溯方法尤为重要!
因为许多小白经常不知道怎么排除bug,所以有必要写此类文章!
二、解决方法
本方法仅适用于Windows系统下追溯问题信息的解决方法,原理是一样的,查看系统的事件查看器,追溯相关报警和信息,来追溯问题的原因!
2.1方法操作
下面以windows10为例,进行操作!
右键任务栏的开始
弹出如下界面,在点击事件查看器
(你也可以用其他手段和方式找到事件查看器),如下:
弹出的事件查看器界面如下:
依次点击事件查看器
->自定义视图
->管理事件
->管理事件栏
,可以看到Windows系统下所有异常错误以时间前后显示,如下:
鼠标双击任意错误信息,可以弹出该错误的信息界面(报错常规信息和详细信息),如下:
另外,在事件查看器``Windows日志
->应用程序
下日志信息也是包络万象,不仅包含了错误信息,还包含了许多的信息
(可能是程序异常发出等的信息),可以进行利用和发掘!
注意:在事件查看器里面的信息
或者错误
有时不太会及时更新,记得刷新或者重新打开事件查看器
!
2.2验证
你可以自己新建个应用程序,制造某个bug,让程序不能运行或者异常退出!
1️⃣以C# 的Window form项目为例,新建好项目后,在主程序的界面代码上加入
(怕报错运行生成不了程序,就直接点击解决方案的项目直接生成应用程序),
Form1.cs代码:
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
throw new Exception("程序运行失败,exception报错!");//增加的报错触发
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
2️⃣接着点击生成的程序,会发现程序不会载入界面同时也不会报错(如果现实情况不知道bug,这就脑瓜疼了):
按照上面的方法,打开事件查看器,查看最近的时间,找到发生的对应事件,双击打开:
可以看到,该错误,提示了有对应名称的程序名(WindowsFormsApp1.exe),引起的!
这样就能证明该应用程序因为程序本身某不知名异常引起的程序载入和运行异常,关于事件查看器的错误信息解析还要靠自身功力去累积经验!
这起码能让你定位到是否由于外界的影响导致的,还有自动退出不报错时异常信息是什么,这对debug改造尤为重要!
三、参考资料
无
最后,文中若有不足,敬请批评指正!