根据异常信息,定位出错代码的位置有关问题

根据错误信息,定位出错代码的位置问题
我的程序在不断的进行视图的切换时就回出现问题,产生的错误信息是"XXXXX.exe 中的 0x7c177acb (mfc71d.dll) 处未处理的异常: 0xC0000005: 读取位置 0x51ec8b65 时发生访问冲突 。"指向的文件是:
atlsimpstr.h的

static CStringData* __cdecl CloneData( CStringData* pData )
{
CStringData* pNewData = NULL;

IAtlStringMgr* pNewStringMgr = pData->pStringMgr->Clone();//就是这个位置
if( !pData->IsLocked() && (pNewStringMgr == pData->pStringMgr) )
{
pNewData = pData;
pNewData->AddRef();
}
else
{
pNewData = pNewStringMgr->Allocate( pData->nDataLength, sizeof( XCHAR ) );
if( pNewData == NULL )
{
ThrowMemoryException();
}
pNewData->nDataLength = pData->nDataLength;
CopyChars( PXSTR( pNewData->data() ), PCXSTR( pData->data() ), pData->nDataLength+1 ); // Copy '\0'
}

return( pNewData );
}
我已经生成了.map文件和.cod文件(不过我的工程比较大,.map文件自然也很大的),根据上面的指向应该是字符串的复制的问题,但是如何根据上面的错误信息和.map文件准确定位呢,请高手给分析一下!

------解决方案--------------------
调试一下,看看调用堆栈就应该知道是哪里调用这个函数了
------解决方案--------------------
在错误的时候进入调试,定位到自己的语句。
------解决方案--------------------
调试的时候若出错误,点那个重试按钮就会定位到出错行的。
------解决方案--------------------
点“重试”时,调出堆栈,就可以看到是那个函数引起的错误.