文章目录
关于Windows程序崩溃(Crash)以及生成dump文件的探究
什么是崩溃(Crash),崩溃(Crash)的现象
什么是崩溃?
崩溃是一个汉语词语,读音为 bēng kuì,多指人因过度的刺激或悲伤,超过了本人的心理承受极限而彻底的情绪 失控,绝望,无法自制。出自汉 应劭 《风俗通・正失・孝文帝》。
事实上,程序员应该说程序Crash了,而不是崩溃了,Crash的含义,参照百度百科说明如下
在正常计算机系统运行过程中,因某种原因宕机,或主机、程序停止工作等情况。
在Windows中,系统Crash的现象表现为,系统蓝屏了,需要重启才能恢复运行,如下所示:
而程序Crash则显示一个“丑陋”的消息框,提示程序运行过程中出现了什么异常,点击确定后,程序退出运行,如下所示:
崩溃(Crash)的原因是什么
那么,Crash的原因是什么呢?在Windows中,调用 CreateProcess
函数启动主线程或 CreateThread
启动线程时,线程函数会在如下代码中运行(下面的代码引自《Windows核心编程》第25章未处理异常和C++异常):
// 主线程启动函数
// CreateProcess启动线程函数
VOID BaseProcessStart(PPROCESS_START_ROUTINE pfnSatrtAddr){
__try{
ExitThread((pfnSatrtAddr)());
}
__except(UnHandledExceptionFilter(GetExceptionInformation())){
ExitProcess(GetExceptionCode());