这个函数是在一个Timer回调函数中被重复调用的(每隔一段时间调一次),但函数不知道为什么只执行前两句,m_pIBoard是一个接口指针
short _stdcall CSysBoard::SingleIO(LPVOID pDataBuf)
{
if(m_pIBoard)
         m_pIBoard->SingleIO();         // 函数以下部分不会被执行到
if(!m_bSave)
{
...
} ... return 0;
}如果把前两句改成
if(m_pIBoard)
{
     m_pIBoard->SingleIO();    // 在此设断点查看@err,hr = S_OK
     DWORD e = GetLastError(); // 此句不会被执行
}其中接口m_pIBoard的实现函数大体如下
short _stdcall CBoard::SingleIO()
{
     // do sth easy just like "int a = b;"
     ...//在此设断点,可以执行,直到此函数结束}
     return 0;
}
顺便说一下,这两个函数分别在不同的动态库中,但在同一进程中,断点调试点进入m_pIBoard->SingleIO(),提示Access Violution,单步高度,直接又返回到CSysBoard的SingleIO的开始{处了

解决方案 »

  1.   

    一看问题就知道是辅线程当掉了,导致整个进程也不声不响的当了自己检查 m_pIBoard->SingleIO();内部肯定有异常,操作非法内存,delete 野指针....你把SingleIO();内部清空,在调试,有问题才怪呢晕
      

  2.   

    跟踪检查一下m_pIBoard->SingleIO();内部的执行情况,应该是里面出了异常了。
    你可以在m_pIBoard->SingleIO();外面加一个Try/Catch试试,把异常捕获。
      

  3.   

    delete 野指针....
    ====================
    这个现在的C++中不会有异常的吧