本文重点讲述的是通过windbg分析进程卡死的问题,在日常的开发过程中,所开发的程序有可能会在某个环节卡主,但程序又没有崩溃(未生成dump文件),那么在这种情况下我们该如何找出程序是在哪个环节或函数处卡主的?本文正是为了解决此问题。
上一段会导致进程卡主的程序代码:
- #include
- #include
- #include
-
- DWORD WINAPI TheadFunc(PVOID)
- {
- Sleep(1000 * 60 * 60);
- return 0;
- }
-
- int main()
- {
- printf("start!\n");
- HANDLE hThread = CreateThread(NULL, 0, TheadFunc, NULL, 0, NULL);
- WaitForSingleObject(hThread, INFINITE);
- CloseHandle(hThread);
- printf("over!");
- system("pause");
- }
上面这段代码很简单,不做多的解释,仅作为我们分析过程中的一个样例。
首先windbg分析进程卡死有两种方式:1、附加到进程;2、手动产生dump,通过dump进行分析;
本文讲述的是第二点,毕竟程序卡死一般是发生在测试或者用户那里,那么如何手动dump文件?
这里采用的是神器procdump[