我有一个工程,编译没有问题,然运行的时候可能会
报错(是当我退出运行程序是说有个异常)。
还有就是虽然我一个字不改动,重新编译一遍可能又不会报错。
如果我编译的时候是用f8,f8...一路这样走过来,程序最后不会报错
(而如果我只是Ctrl+f9或者直接f9, 则很可能最后编译的exe运行要报错)。如果编译完成后的exe,第一次运行,退出,没有问题的话,以后也不会有问题,
随便换到其他机器执行也没有问题。
但是如果第一次运行,点退出的时候有异常的话,以后每次运行都有异常。
换到其它机器执行也会一样。。如果设置断点跟踪,发现~~~~~~~~是在主工程文件的快执行最后一个end的时候才出现的异常。
就像下面那样
(前略)
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end; //单步执行了这句后才会出异常
end.
我~~~~~~~~~~~~~头~~~~~~~~~~~~~~大啊请帮我分析一下怎么找bug?
报错(是当我退出运行程序是说有个异常)。
还有就是虽然我一个字不改动,重新编译一遍可能又不会报错。
如果我编译的时候是用f8,f8...一路这样走过来,程序最后不会报错
(而如果我只是Ctrl+f9或者直接f9, 则很可能最后编译的exe运行要报错)。如果编译完成后的exe,第一次运行,退出,没有问题的话,以后也不会有问题,
随便换到其他机器执行也没有问题。
但是如果第一次运行,点退出的时候有异常的话,以后每次运行都有异常。
换到其它机器执行也会一样。。如果设置断点跟踪,发现~~~~~~~~是在主工程文件的快执行最后一个end的时候才出现的异常。
就像下面那样
(前略)
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end; //单步执行了这句后才会出异常
end.
我~~~~~~~~~~~~~头~~~~~~~~~~~~~~大啊请帮我分析一下怎么找bug?
你是不是释放内存时出现什么问题了
以后哪天会豁然开然的
---------------------------
Debugger Exception Notification
---------------------------
Project myapp.exe raised exception class EInvalidPointer with message 'Invalid pointer operation'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
如果控件有bug,那么就要把bug找出来。(基本上我只有用到一个叫做gifImage.pas的自由代码,
没有其他非官方控件)
to rikky(读书、心知、生活) ????????
我用的delphi6, 找不到你说的选项
当formDestroy时=>....=>GifImage.pas里面的最后那句end.
DummyThread.Free;
end;
end.//在这里之后出现的问题gifImage.pas本身是Anders Melander,99年写的一个源码单元。嗯,在我的程序里面有只有2个地方会涉及到这个单元。
1个是主form有个函数。里面设计gifImage的只有
GIFimage := TGIFimage.Create ;
Try
GIFimage.loadfromfile(myfile);
Image.Picture.Bitmap.Assign(GIFimage);
finally
freeandnil(GIFimage);
end;
2是写有一个component.里面的uses 单元有gifImage;///////////请继续帮我分析。。
begin
Try
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
except
showmessage('异常');
end;
end;
"这句话的含义...嗯,程序中间有一些form1的成员函数,函数里面使用了application.terminate;
然跟踪的时候发现,不管是f7,还是f8,有时候似乎都不能让application.terminate执行;
游标跑下面一句去了!
对于.Create和free的问题
我检查过所有的Create.都是采用的try... finally free形式,所以不知道下面该查什么。最郁闷的是报错时有时无。跟运行环境无关,编译后随机可能出现正确也可能出现错误的代码
我就搞不懂了。
(比如,我随便在那里加个空格,在减个空格,实际上源码是一样的,
怎么会编译都产生不同的结果呢?)
--------〉
主form不是我手动create的,也没有它的释放函数。
不知道有什么东西是会触发 form的释放事件
这里好像是写过一些释放动作
不过都是
if assigned (x)= true then
begin
freeAndNil(x);
end;
的形式的,应该不会错呀
管不了那么多了。结贴