一个奇怪的调试错误(有经验的请进!)
我写了一个随机生成字符串的程序可是为什么总出现错误.
可是在生成的精简文件中却没有问题.请高手来帮忙!!!
我会加分的!!!
问题点数:100、回复次数:16Top
1 楼vickowang(你的影子无所不在...)回复于 2002-03-31 16:20:06 得分 10
出现什么错误呀?Top
2 楼knl(小K)回复于 2002-03-31 16:22:11 得分 0
出现一个对话框说!!!诊断程序发现你的程序有错误请看vc++的文档!!Top
3 楼webber84(***闭关修炼中***)回复于 2002-03-31 16:32:12 得分 0
如果是assertion failed的话,一般在对话框中会给出是哪个文件中的assert引起的错误,以及在该文件的多少行,你可以把那个文件打开来看看到底是什么
assert()引起的错误。Top
4 楼knl(小K)回复于 2002-03-31 16:37:39 得分 0
没有啊!!
以下是我的源码::
CFile cfile;
CFileException file;
CString Pck,Pvk,Pass("anahruqmruipq");
Pass.Format (",kajuqnaui");
CString number("Window Size(%d,%d)");
CString n8("***************");
CString center("THIS PSK MADE FLY!!!");
CString geli("----------------------------------------\n");
int n=0,num=2;
Pck=GetPck();
do{
for(int i=0;i<=7;i++)Pvk+=GetPvk(Pass[n],Pck[i*10],n,i);
++n;
}while (n<=7);
CString string;
string=Pass.Mid(7);Pvk+=string;Pvk+=number;
Pvk+="?????";
string.IsEmpty ();
string=GetPck();
Pvk+=string.Left(118-Pvk.GetLength ());
if(!cfile.Open ("c:\\abc.phk",CFile::modeCreate|CFile::modeReadWrite))
{
AfxMessageBox("error");
}
cfile.Write (n8,15);
cfile.Write (center,20);
n8+="\n";
cfile.Write (n8,16);
Pvk+=geli;
Pvk+=Pck;
int q=0;
CString lin;
while((Pvk.GetLength ()-q)>=0){
lin.IsEmpty ();
lin=Pvk.Mid (50+q,50);
q+=50;
cfile.Write (lin,51);
}
lin.IsEmpty ();
lin=Pvk.Mid (q);
cfile.Write (lin,lin.GetLength ());
cfile.Close();
AfxMessageBox("要覆盖已有的文?",MB_YESNOCANCEL|MB_ICONQUESTION);//调试的
Top
5 楼knl(小K)回复于 2002-03-31 16:40:21 得分 0
一道到看文件就出错;
而在正式编成精简代码时却没有错误
Top
6 楼knl(小K)回复于 2002-03-31 16:45:28 得分 0
信息是这样的::
Debug Assertion Failed!
Program :我的程序地址
File:strex.cpp
Line:332
For information on how your program can cause an assertion
failure ,see the Visual C++ documengation on asserts.
(Press Retry to debug the application)Top
7 楼webber84(***闭关修炼中***)回复于 2002-03-31 16:56:41 得分 0
我的意思是你打开strex.cpp,找到第332行,看看是什么assert语句出错了。你贴出来看看。Top
8 楼knl(小K)回复于 2002-03-31 17:00:31 得分 0
我并没有此文件呀!
Top
9 楼webber84(***闭关修炼中***)回复于 2002-03-31 17:18:00 得分 10
我知道,应该在visual stdio的目录下,你搜一搜就能搜到的。Top
10 楼zzq_fortu(郑)回复于 2002-03-31 17:21:05 得分 10
吧那个函数也给出来吧!Top
11 楼xiaohur()回复于 2002-03-31 18:11:27 得分 10
一定是内存溢出错误,调试看一下那句话出错了。Top
12 楼doghead(长青)回复于 2002-03-31 18:35:25 得分 50
把代码给我,我帮你调试成功,我最擅长调试程序,
qq:120353293,email:doghead@371.net
保证找到病症所在,
你的代码问题太多,
最简单的,你调用CString::IsEmpty()干什么,他是判断此串是否为空
我估计你是想清空字符串,要用Empty,或直接赋值“”;
GetPck();是干什么的,你保证它是对的么?
你写代码的风格太差,变量多,乱但不明确,等等
理清思路,重写吧,这种代码没有一点保存,维护的价值
Top
13 楼zgc_7622(.nlk)回复于 2002-03-31 18:41:45 得分 0
GetPck()能给出源码吗?Top
14 楼zgc_7622(.nlk)回复于 2002-03-31 18:47:19 得分 0
GetPvk()能给出源码吗?
Top
15 楼heyy(heyy)回复于 2002-03-31 23:51:46 得分 10
是不是用了CFile类的缘故,我的机器上在调试版上用CFile就出错,可是一到发行版上就没问题,到如今我都不太用这个类Top
16 楼knl(小K)回复于 2002-04-03 01:19:09 得分 0
谢谢大家的帮助.我调试出了.时字符串溢出错误.
我都给分.Top




