我现在编一个多线程的程序。程序实现这样的功能:程序启动时首先连接任务管理分系统,在连接服务器之后创建一个接收线程,实时接收来自任务管理分系统传过来的socket字符串,代码如下:
CreateThread(NULL,0,RecvThread,
m_pClientSocket,0,&dwThreadId);
其中RecvThread是一个接收线程函数,其中RecvThread在接收之后同时创建线程,代码大致如下:
DWORD WINAPI RecvThread(LPVOID lpParam)
{
……
CMIClientSocket* pSocket =NULL;
pSocket = (CMIClientSocket*)lpParam;
DWORD dwThreadId=0;
socket.Attach(pSocket->m_hSocket);
//Modifications on 2004-9-6 11:29:30这样可以同时发送数据
iRet = socket.Receive(&buf,0);
if(SOCKET_ERROR != iRet)
{
//Modifications on 2004-9-6 11:31:07创建一个解释socket字符串的线程,用于//判断常规任务还是快反任务
pSocket->m_pConnectManager->ThreadProcessRead(pSocket);
}
……
// 创建一个接收线程
CreateThread(NULL,0,RecvThread,
lpParam,0,&dwThreadId);
return 0;
}
在pSocket->m_pConnectManager->ThreadProcessRead(pSocket)函数里有这样的功能:
假如收到一个快反任务后,就弹出一个快反任务对话框输入快反任务名称,代码大致如下;
CAIDlgProductName dlg;
if(dlg.DoModal() == IDOK)
{
str = dlg.m_csProductName;
}
现在的问题是还没输入快反任务名称,程序就出现非法访问内存的错误,如下图:
这个错误是在弹出快反任务对话框出现的。因为RecvThread函数是实时监控一样,我想不能在里面设置一个普通的断点进行调试。我想能不能设置这样一个条件断点:就是在弹出一个快反任务对话框时才进入RecvThread函数调试,该如何设置这个条件断点呢?