windows用户态程序排错——程序无法运行和奔溃排查

有的时候我们的应用程序在调试时使用的好好的,但在其他的PC上运行时就可能会出现无法运行、异常退出的问题,这个时候就需要我们有足够的手段进行排查:

1)日志排查:好的应用程序也必定集成了好的日志模块,用于程序异常时提供足够的信息供开发人员迅速定位问题;所以在开发程序的时候必不可少的就是在关键位置添加日志,在程序已知的异常判断位置,将错误信息尽可能多的写入日志:比如函数执行失败,一般都需要将失败的返回值、当前的错误码以及关键的函数参数写入日志。

这里罗列一些用过的比较好用的开源日志系统:C++:log4cplus(https://github.com/log4cplus/log4cplus) C:z-log(https://github.com/HardySimpson/zlog),这里C不推荐使用log4c,因为它已经没有人维护了,有内存泄漏问题。

2)minidump:应用程序可以在最上层捕获程序抛出的异常,对于无法处理的异常,将当前程序的内存信息写minidump,便于后续配合程序的pdb文件迅速定位出异常原因。

3)procdump工具:procdump工具对于定位应用程序奔溃问题非常有效,这是windows提供给我们的非常好用的工具,可以使用它对指定进程进行监控,当进程崩溃时可以将奔溃时刻的线程堆栈、内存信息写入到dump文件中,与上面说的minidump类似,配合pdb文件,使用windbg可以迅速定位出奔溃原因。

你可能感兴趣的:(windows,windbg)