使用WinDbg调试关键区死锁

本文通过一个实例来讲解如何使用WinDbg来调试Windows CriticalSection死锁的问题。 一. 演示示例这里有一个关键区锁死问题的程序,运行之后依次点击“CS锁死”按钮、右上角退出按钮,程序就会卡死。 对于眼下的这个问题,界面完全失去响应,这说明负责消息处理的UI线程阻塞了。 对于几乎所有的windows GUI程序,编号为0的初始线程就是UI线程,windows发现该界面一段时间没有消息响应之后就会在标题后面加上“(未响应)”。

软件调试

使用WinDbg调试互斥体死锁

本文通过一个实例来讲解如何使用WinDbg来调试Windows Mutex死锁的问题。

软件调试

C++ 匿名对象

在WebRTC的源码中有如下函数: 1234template <typename T>std::unique_ptr<T> WrapUnique(T* ptr) { return std::unique_ptr<T>(ptr);}

C++语言

一个MySQL存储过程模板

在进行数据库开发时,我们可能需要写很多存储过程,本文提供一个存储过程的模板,通过该模板可以简化存储过程的开发。

数据库

Windows套接字I/O模型(5)-完成端口模型

一、写在前面前面的文章已经介绍了套接字 I/O 的同步模型、WSAAsyncSelect模型、WSAEventSelect模型,到目前为止套接字I/O还剩下2个模型没有介绍:重叠模型,完成端口模型。 如果程序对性能和并发要求不高...

网络编程

由字符串格式化函数引起的崩溃

本文记录一个由错误使用StringCchVPrintf等格式化函数所导致的崩溃问题。

软件调试

Windows套接字I/O模型(4)-WSAEventSelect模型

一、WSAEventSelect模型介绍WSAEventSelect模型和WSAAsyncSelect模型类似,但WSAEventSelect模型允许应用程序在一个或多个套接字上面接收以事件为基础的网络事件通知。该模型和WSAAsyncSelect模型的最主要的区别在于网络事件是由事件对象句柄完成的,而不是通过窗口消息完成的。

网络编程

Windows套接字I/O模型(3)-WSAAsyncSelect模型

一、WSAAsyncSelect模型介绍利用WSAAsyncSelect模型结合windows窗口消息循环,应用程序可以在一个套接字上接收以Windows消息为基础的网络事件通知。要想使用WSAAsyncSelect模型,首先必须创建一个Windows窗口,并为该窗口提供一个窗口过程支持函数。

网络编程
11920212223