Windows 已在 test.exe 中触发一个断点。

jiajia_loved 2013-08-05 11:40:54
Windows 已在 test.exe 中触发一个断点。

其原因可能是堆被损坏,这说明 test.exe 中或它所加载的任何 DLL 中有 Bug。

原因也可能是用户在 test.exe 具有焦点时按下了 F12。

输出窗口可能提供了更多诊断信息。

这是什么问题?

BOOL CtestView::ZipAllFile(CString &cTarFile) //cTarFile : f:\主程序目录\etouch.exe
{
//MessageBox(cTarFile);
/* if (cTarFile == L"")return FALSE;
CInfoZip InfoZip;
if (!InfoZip.InitializeZip())return FALSE;

CString path=cTarFile;
int nPos=path.ReverseFind('\\');//从右边找到第一个“\\”字符,返回其数组下标的位置
path=path.Left(nPos+1); //保留字符串的前nPos+1个字符(包括“\\”);

if (nPos<2 || nPos>(MAX_PATH-40))return FALSE;
CString filename;
filename.Format(L"mymail%08x.zip",GetTickCount());
path=path+filename;//f:\主程序目录\mymail34234324.zip
BeginWaitCursor();
int nPages = m_PageManager.m_PageList.GetSize();

char **pFiles = (char **) new LPVOID [nPages];
int i=0;
for (i=0;i<nPages;i++)
{
pFiles[i] = new char[MAX_PATH+1];
memset(pFiles[i],0,MAX_PATH+1);
//wsprintf(pFiles[i],L"mymail%04d.JPG",i);
sprintf(pFiles[i],"mymail%04d.JPG",i);
CString ImageFile;// = pFiles[i];
ImageFile.Format(L"mymail%04d.JPG",i);
//CString ImageFile(pFiles[i]);

//string str( cstr );
m_PageManager.SavePageToImage(ImageFile,L"JPG",i);
}
BOOL sult = TRUE;
int len = WideCharToMultiByte(CP_ACP,0,path,path.GetLength(),NULL,0,NULL,NULL);
char *chr=new char[len+1];
WideCharToMultiByte(CP_ACP,0,path,path.GetLength(),chr,len+1,NULL,NULL);
chr[len]=0;

//string limage = chr;

if (!InfoZip.AddFiles(chr, pFiles, nPages))sult = FALSE;
if (!InfoZip.Finalize())sult = FALSE;
EndWaitCursor();
CString deletfile;
for(i=0; i<nPages; i++)
{
deletfile.Format(L"%s",pFiles[i]);
::DeleteFile(deletfile.AllocSysString());
delete pFiles[i];
}
delete pFiles;
cTarFile = path.AllocSysString();
return sult;*/
if (cTarFile == L"")return FALSE;
CInfoZip InfoZip;
if (!InfoZip.InitializeZip())return FALSE;

CString path=cTarFile;
int nPos=path.ReverseFind('\\');//从右边找到第一个“\\”字符,返回其数组下标的位置
path=path.Left(nPos+1); //保留字符串的前nPos+1个字符(包括“\\”);

if (nPos<2 || nPos>(MAX_PATH-40))return FALSE;
CString filename;
filename.Format(L"mymail%08x.zip",GetTickCount());
path=path+filename;//f:\主程序目录\mymail34234324.zip
BeginWaitCursor();
int nPages = m_PageManager.m_PageList.GetSize();

char **pFiles = (char **) new int [nPages];
for (int i=0;i<nPages;i++)
{
pFiles[i] = new char[MAX_PATH+1];
memset(pFiles[i],0,MAX_PATH+1);
sprintf(pFiles[i],"mymail%08x.JPG",i);
CString ImageFile = (CString)pFiles[i];
// CString ImageFile;// = pFiles[i];
// ImageFile.Format(L"mymail%08x.JPG",i);
//ImageFile.Format(L"%s",pFiles[i]);
m_PageManager.SavePageToImage(ImageFile,L"JPG",i);
}
BOOL sult = TRUE;
int len = WideCharToMultiByte(CP_ACP,0,path,path.GetLength(),NULL,0,NULL,NULL);
char *chr=new char[len+1];
WideCharToMultiByte(CP_ACP,0,path,path.GetLength(),chr,len+1,NULL,NULL);
chr[len]=0;
if (!InfoZip.AddFiles(chr, pFiles, nPages))sult = FALSE;
if (!InfoZip.Finalize())sult = FALSE;
EndWaitCursor();
CString deletfile;
for(int i=0; i<nPages; i++)
{
deletfile.Format(L"%s",pFiles[i]);
::DeleteFile(deletfile.AllocSysString());
delete pFiles[i];
}
delete pFiles;
cTarFile = path.AllocSysString();
return sult;
}

BOOL CInfoZip::AddFiles(const char *pszArchive, char ** paFiles, int iFileCount)
{
CZipParams zpParams;
SetDefaultValues(&zpParams);

// seting archive name
zpParams.m_pszArchiveFileName = (char*)malloc(strlen(pszArchive)+1);
ZeroMemory(zpParams.m_pszArchiveFileName, strlen(pszArchive)+1);
strcpy(zpParams.m_pszArchiveFileName, pszArchive);//复制 f:\目录\mymail234234.zip

// seting file count
zpParams.m_liFileCount = iFileCount;

// seting file names
for (int i=0; i<iFileCount; i++)
{
zpParams.m_pszFileNames[i] = (char*)malloc(MAX_PATH+1);
ZeroMemory(zpParams.m_pszFileNames[i], MAX_PATH+1);
strcpy(zpParams.m_pszFileNames[i], paFiles[i]);
}

// executing command
int iProcessedCount = m_ZipDllExec(&zpParams); //调试到这里出错。。。
ReleaseParams(&zpParams);

return (iProcessedCount == iFileCount);
}
...全文
3107 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
么特里亚 2015-05-18
  • 打赏
  • 举报
回复
看看new的地方
zhengx_l 2015-05-14
  • 打赏
  • 举报
回复
主要的原因是你要压缩的文件被打开,或者你要压缩的文件正在写,关闭后再试试就不会报错了。
空中海 2014-07-18
  • 打赏
  • 举报
回复
你看看是不是因为delete的那个地方出的问题,有可能是因为你在delete有new分配空间的时候,本来有new分配的空间比较少,最后又一直拼接,造成最后拼接数组需要的空间比用new分配的空间大,delete的时候就会出现这个问题,如果是这样就在new的时候多申请一些空间,就可以解决这个问题!
赵4老师 2014-05-07
  • 打赏
  • 举报
回复
用depends.exe分别在开发机和测试机上查看exe依赖的dll及其对应文件和版本号的不同之处!
码大虾 2014-05-07
  • 打赏
  • 举报
回复
LZ后来怎么弄的,我最近也遇到了同样问题
sduxiaoxiang 2014-03-17
  • 打赏
  • 举报
回复
代码单步调试,先确定问题所在代码,再定位错误原因
赵4老师 2014-03-17
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。 用depends.exe查看exe依赖的dll
正解!
勤奋的小游侠 2014-03-15
  • 打赏
  • 举报
回复
有dll库是6.0编译的吧?没有全部通过2010生成工程。
一码超神 2014-03-15
  • 打赏
  • 举报
回复
Windows 已在 ***.exe 中触发一个断点。MFC程序里,程序无法启动。。。作何解
modyaj 2013-09-12
  • 打赏
  • 举报
回复
这种错误没办法 只有慢慢调试
cocoabird 2013-09-12
  • 打赏
  • 举报
回复
没转化彻底吧
jiajia_loved 2013-09-12
  • 打赏
  • 举报
回复
VC2010有其它的缺陷吗?
jiajia_loved 2013-08-07
  • 打赏
  • 举报
回复
直接运行达到了效果但是我的主程序就自己关掉了,调试的时候出现问题,如果选择忽略,程序能正常使用。。。
mujiok2003 2013-08-06
  • 打赏
  • 举报
回复
引用 1 楼 chen_jiajia 的回复:
补充: 在Vc6.0上编译是没有错误的。 但是在VC2010里编译调试的时候就出现 Windows 已在 test.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 test.exe 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在 test.exe 具有焦点时按下了 F12。 输出窗口可能提供了更多诊断信息。
直接运行有没有问题?
jiajia_loved 2013-08-06
  • 打赏
  • 举报
回复
还是有这样的问题,难道真的是兼容性的问题吗? 实在不行就只能换一种方法了。。。。
SKATE11 2013-08-05
  • 打赏
  • 举报
回复
引用 3 楼 zhao4zhong1 的回复:
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。 用depends.exe查看exe依赖的dll
++++
赵4老师 2013-08-05
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。 用depends.exe查看exe依赖的dll
max_min_ 2013-08-05
  • 打赏
  • 举报
回复
引用 1 楼 chen_jiajia 的回复:
补充: 在Vc6.0上编译是没有错误的。 但是在VC2010里编译调试的时候就出现 Windows 已在 test.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 test.exe 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在 test.exe 具有焦点时按下了 F12。 输出窗口可能提供了更多诊断信息。
原因都有了 那就 简单了 一一排查啦!
jiajia_loved 2013-08-05
  • 打赏
  • 举报
回复
补充: 在Vc6.0上编译是没有错误的。 但是在VC2010里编译调试的时候就出现 Windows 已在 test.exe 中触发一个断点。 其原因可能是堆被损坏,这说明 test.exe 中或它所加载的任何 DLL 中有 Bug。 原因也可能是用户在 test.exe 具有焦点时按下了 F12。 输出窗口可能提供了更多诊断信息。
jiajia_loved 2013-08-05
  • 打赏
  • 举报
回复
太着急了。。。
加载更多回复(2)

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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