VC的框架和其他编译器的结构不同,如AXD调试器,你单步执行或进入函数执行一步步的行进过程很清楚,当用VC调式时往往不是这样。单步调着调着就不知踪影了。例如:void CServerSocket::OnReceive(int nErrorCode)
{
char buff[1024];
int bufflen=1024;
int nLen = CSocket::Receive(buff,bufflen);
m_pParentWnd->PostMessage (WM_UPDATEMSG,(WPARAM)buff,(LPARAM)nLen);
CSocket::OnReceive(nErrorCode);
}PostMessage后照说应该去到DefWindowProc窗口函数进行消息处理的分发。可单步后却是继续执行下面的 CSocket::OnReceive(nErrorCode);然后就跳入sockcore.cpp里执行这个switch (WSAGETSELECTEVENT(lParam)),直到弹出need resouce的DLG或者Disasembly里。
有什么办法可以观察到程序的行进的每个步骤。
{
char buff[1024];
int bufflen=1024;
int nLen = CSocket::Receive(buff,bufflen);
m_pParentWnd->PostMessage (WM_UPDATEMSG,(WPARAM)buff,(LPARAM)nLen);
CSocket::OnReceive(nErrorCode);
}PostMessage后照说应该去到DefWindowProc窗口函数进行消息处理的分发。可单步后却是继续执行下面的 CSocket::OnReceive(nErrorCode);然后就跳入sockcore.cpp里执行这个switch (WSAGETSELECTEVENT(lParam)),直到弹出need resouce的DLG或者Disasembly里。
有什么办法可以观察到程序的行进的每个步骤。
只能自己大概了解流程,多设断点,在自己关心的地方设置断点跟踪过程