根据错误信息,定位出错代码的位置问题

feilinhe 2008-08-04 11:49:00
我的程序在不断的进行视图的切换时就回出现问题,产生的错误信息是"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文件准确定位呢,请高手给分析一下!
...全文
1135 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jianggu521 2012-01-31
  • 打赏
  • 举报
回复
怎么解决的?
xiaopig0516 2011-10-12
  • 打赏
  • 举报
回复
我也碰到这个问题,在WIN7里会出这个错误,在XP里重新编译就不会了.太奇怪了.
jarraytan 2008-08-05
  • 打赏
  • 举报
回复
这就不知道了,只能友情UP了
feilinhe 2008-08-05
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dyx1024 的回复:]
点“重试”时,调出堆栈,就可以看到是那个函数引起的错误.
[/Quote]
唉,那个堆栈里面全是xxx.dll和系统的c++文件,要是能看到我就不问了,我现在要的是怎么通过.map和.cod文件查找错误的,如何根据错误地址(0x51ec8b65类似的地址)计算错误代码在.map和.cod的位置
feilinhe 2008-08-05
  • 打赏
  • 举报
回复
搞定了,用了不到两天的时间,改写了不少代码,解了上面的bug,但是关于查找错误的方法还是没搞定!!!
菜牛 2008-08-04
  • 打赏
  • 举报
回复
在错误的时候进入调试,定位到自己的语句。
Conry 2008-08-04
  • 打赏
  • 举报
回复
调试一下,看看调用堆栈就应该知道是哪里调用这个函数了
socrates 2008-08-04
  • 打赏
  • 举报
回复
点“重试”时,调出堆栈,就可以看到是那个函数引起的错误.
feilinhe 2008-08-04
  • 打赏
  • 举报
回复
你门都没有明白我的意思,是这样的我的程序是在运行的时候才出错的,而且是我通过频繁的切换视图才出错的,其它情况一切正常,但是出错的时候点“重试”定位到的是系统的头文件里面的东西,那根本不是真正的错误,我现在有.map文件,里面记录了一些信息(包括出错的代码行),我想问的是怎么根据错误信息里的地址,来在.map和.cod文件中找到出错的那行代码,用2楼”Conry “的方法虽然解决了一部分问题,但是仍有时出现错误,而且错误是”Runtime Error“问题,这个就比较难找了,希望高手大哥们给点意见啊!!!
jarraytan 2008-08-04
  • 打赏
  • 举报
回复
调试的时候若出错误,点那个重试按钮就会定位到出错行的。
feilinhe 2008-08-04
  • 打赏
  • 举报
回复
唉,看来还得自己一点一点的调试啊

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧