一位朋友的工厂程序因主线程通过ShowConfirmDialog调用NtUserShowWindow时,发送消息给其他窗口未响应而卡死。通过使用procdump获取内核态栈,最终定位了问题。
本文分析了vs2022卡死问题,重点挖掘了崩溃前vs2022已分配的内容。通过查找vector对象地址和查看vector内容,得出vector中元素个数为40360465,验证了之前的分析。同时发现vector中每个元素的引用计数对象地址+0x10等于实际对象地址,推测vector中存储的对象是通过std::make_shared()创建的。文章总结了procdump的使用和64位进程的虚拟内存空间。
本文介绍了生成内核态dump的方法和分析dump文件的步骤,重点介绍了使用notmyfault和procdump两种生成方式,以及通过windbg和!process命令分析进程和线程信息,找到内核态栈中的函数。同时,强调了抓取内核态dump的重要性和注意事项。
完成下面两步后,将自动完成登录并继续当前操作。