1)
Enent log
2)
Performance log
3)
Event tracing log
4)
Dump file
5)
App-related log files
Windows常用排错手段。
日志内容涉及:应用安装、安全管理、系统设置、问题或报错等。
默认存储位置: %SystemRoot%\system32\winevt\logs\
日志涵盖的范围:
1)
操作系统基础组件:存储,内存,网络,处理器,系统组件;
2)
应用组件:SQL,Exchange,第三方应用等….
ETW:Event tracing for Windows
ETW tracing作用:
1)
提供对操作系统或用户、内核模式运行的更深解读。
2)
显示特定驱动的延迟和行为。
3)
无需重启系统或安装调试工具,可通过接口实时访问。
4)
常见格式ETL(Event tracing log format)
Events和Performance counters区别;
1)
Performance 记录以ms为单位,常用于总体性能诊断;
2)
ETL记录以us为单位,每分钟产生数GB的数据,记录了详细的系统信息
1.2.4.1.
系统DUMP文件:
Dump文件是系统出错一瞬间的系统内存静态拷贝。
系统保存DUMP的流程:
1)
系统调用基本磁盘驱动,把内存数据写入到系统盘的pagefile中;
2)
启动时,系统检查注册表值,确定是否要转换DUMP文件;
3)
当需要转换时,系统将page文件写道memory.dmp中;
Dump file类型设置方法:系统属性》高级》启动和故障恢复》写入调试信息
Dump file常见类型:
1)
Complete memory dump(完全内存转储):内存中所有用户态和内核态数据。
2)
Kernel memory dump(核心内存转储):内存中内核态数据,为完全转储文件的1/3。
3)
Smal memory dump(minidump):基本调试信息,文件较小,一般64KB-256KB。
1.2.4.2.
应用程序dump文件
收集应用程序的userdump文件
目的:在应用程序失去响应或占用高CPU时,手动收集应用程序的User Dump文件。
方法:在“任务管理器”中右击程序,创建转储文件。
1.2.4.3.
Symbol文件
Symbol file是以pdb为扩展名一个数据信息文件,包含应用程序二进制文件调试信息,专门用于调试时解释可执行文件中的变量信息。
Symbol 分为public symbol(定位到函数)和private symbols(定义到变量和源代码),大部分信息需要配合源代码才可方便分析。
常见应用日志:
1)
Setup log
2)
Cluster log
3)
IIS log
4)
DHCP log
5)
DNS log
6)
Windows update log
7)
………………
启动:Event Viewr(事件查看器)
常见日志分类:
1)
系统日志,10天内无重复性故障报告。
2)
应用日志:应用相关日志
3)
安全日志:默认关闭
4)
Forwarded Events: 远程收集日志,方便监控;
注意:
1)
日志文件分开存放,单个文件不宜设置过大,否则系统打开日志占用内存过大
。
2)
远程收集日志,windows 2016 以上,建议安装WAC(windows admin center精简版的监控平台,需要tcp 5985端口和 管理员权限)
Windows Performance Monitor (性能监视器)利用配置信息、性能计数器和Event trace date对系统吸能能实施侦测,以上信息可汇总成数据收集集合(Data Collector Sets)。
1)
配置信息:Performance monitor从注册表中读取。
2)
性能计数器:可以周期性获取特定应用或系统整体提权行为和状态指标。
3)
事件跟踪数据:通过应用或系统的trace provider组件收集,管理员可将若干种trace providers组合一个trace session.
Performance Toolkit可深入执行Windows性能分析的官方工具包。
Windows评估和部署工具包(ADK),下载地址:
***.***/zh-cn/windows-hardware/get-started/adk-install
整个安装包较大,可选择安装部分组件,Window性能诊断种主要用到的组件为”Windows Performance Toolkit”,其中包含:
1)
WPR (windows performance recorder): 命令行收集traces。
2)
WPRUI :图形化收集traces。
3)
WPA::图形化分析traces
WPT VS
Performance Monitor
1)
WPT收集的日志通常在2-8GB,而Perfmon通常小于500MB。
2)
WPT是目前最深入的分析工具。
3)
WPT 需要symbol。
一般使用Windbg进行Dump调试,也可以用于代码调试及实时调试。
Windbg 可从别的机器拷贝,或从Platform SDK and DDK找到此工具,下载地址:
***.***/en-us/windows/downloads/windows-sdk/
Windbg需要symbol path才可以进行分析Dump。默认命令:!analyze –v 可查看此dump文件的基本信息。
Livekd工具可实时调试内核,与windbg一起联网使用,需下载symbol文件。
1)
Process Explorer:检查进程及线程 CPU使用率、Call stack函数调用,收集User Dump文件。早期没有ETW\资源管理器时使用。下载地址:***.***/en-us/sysinternals/downloads/process-explorer
2)
Process monitor : 性能诊断,配置issues,收集中断日志。
3)
CM Trace: SCCM log reader.。
4)
poolman: 查看内存池使用情况,指虚拟内存。
5)
psexec : 远程管理工具,
6)
PAL : 性能日志分析工具。
7)
Bluescreen viewer: 第三方蓝屏分析工具,
应用程序无响应可能的原因:
1)
程序内部有死锁
2)
在等待另一个程序或组件
3)
等待内核响应
4)
等待磁盘或其他硬件
应用程序异常退出可能的原因:
1)
访问非法地址
2)
除0
3)
用户态中的堆栈溢出
调试应用程序无响应的问:
1)
开启性能监控器,用于监控内核态的资源使用,比如CPU,内存,硬盘等
2)
收集失去响应时的USER DUMP文件,使用任务管理器或ProcExp等工具
3)
收集系统手动蓝屏的complete dump 完全内存转储文件
4)
WER (Windows Error Reporting)是自带的工具,用于调试应用程序异常退出
可能的现象
1)
机器非常的慢,多个应用程序异常的慢,无法进行操作
2)
鼠标/键盘没有响应
3)
网络没有响应,PING /RDP/文件共享失败
4)
本地无法登陆,桌面锁死,黑灰屏或是只有背景界面
5)
系统直接异常重启
6)
系统蓝屏
可能的原因
1)
硬件问题
2)
系统/应用程序死锁
3)
内核资源使用异常
4)
病毒/恶意软件
基本调试系统死机/蓝屏的思路:
1)
检查系统日志,看是否有出错记录
2)
开启性能监控器,检查系统资源使用
3)
检查硬件
4)
卸载最近安装的软硬件
5)
用最后一次正常配置的模式恢复到之前的正常配置
6)
手动的收集死机时的DUMP文件。
7)
收集系统蓝屏时的DUMP文件
8)
通过另一台机器进行Live debug
典型的系统蓝屏的原因
1)
内存或Pool出错
2)
数据结构出错或内容不正确
3)
第三方驱动出错
4)
内核资源使用异常
5)
硬件出错
6)
手动触发蓝屏
应该把握的原则
1)
80/20原则: 先用最简单的方法进行分析。
2)
工具不是万能的