谁会解读BCB的*cgl文件(CodeGuard产生的)?

xufs 2009-12-12 12:55:40
各位BCB编程高手:
您好!
现有问题求教:
我有一个进化算法函数优化程序, 打开CodeGuard,编译成非独立运行的exe文件时,可正常运行。虽关闭主窗口时,出现“Access violation at address 74DBODE8.Read of address 74DB0DE8”。
打开CodeGuard,编译独立的执行文件时,出现“CodeGuard delected error(s) in the program. A log file will be created.”,此说:程序中的错误被CodeGuard检测到,一个长文件将创建。但该这个长文件放在哪里?
按确定后,又出现“:“应用程序发生异常 未知的软件异常 (0x0eedfade), 位置为 0x7c812afb.”。

打开MultipleHumpGA.cgl见:

Error 00001. 0x400000 (Thread 0x0EC4):
Exception 0xEEDFADE:
Call Tree:
0x7C812AFB(=kernel32.dll:0x01:011AFB)
0x004BF7A2(=MultipleHumpGA.exe:0x01:0BE7A2)
0x004BF973(=MultipleHumpGA.exe:0x01:0BE973)
0x004BF29A(=MultipleHumpGA.exe:0x01:0BE29A)
0x004BF27C(=MultipleHumpGA.exe:0x01:0BE27C)
0x004C2D8B(=MultipleHumpGA.exe:0x01:0C1D8B)
什么意思?出现什么问题?如何解读?
调用“树”,我的程序中有自己编写的数学表达式解析器组件,其中将数学表达式解析为表

达式树并通过表达式树来计算表达式值。。可是非独立运行的exe文件运行正常?!而且解析

的表达式未见有误。难道释放表达式树时有误?但据我所知,组件的释放是自动进行的。

请哪位高手给我指教,谢谢。
...全文
492 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
aihuaren 2010-11-29
  • 打赏
  • 举报
回复
帮我看看,我的程序也是,去掉 package以后,报错

[4656] RtlWerpReportException failed with status code :-1073741772. Will try to launch the process directly
xufs 2010-01-03
  • 打赏
  • 举报
回复
既然是主窗体, 把这行注释掉
//Action = caFree-----------如此做了,但主窗口还是不出现!
为何编译成独立运行的.exe文件,一启动,就出错,主窗口不出现。

MultipleHumpGA.cgl记录:
Error 00001. 0x400000 (Thread 0x0E40):
Exception 0xEEDFADE:
Call Tree:
0x7C812AFB(=kernel32.dll:0x01:011AFB)
0x004C0282(=MultipleHumpGA.exe:0x01:0BF282)
0x004C0453(=MultipleHumpGA.exe:0x01:0BF453)
0x004BFD7A(=MultipleHumpGA.exe:0x01:0BED7A)
0x004BFD5C(=MultipleHumpGA.exe:0x01:0BED5C)
0x004C386B(=MultipleHumpGA.exe:0x01:0C286B)


DebugView记录:
[2824] WinMain
[2824] frmMain
[2824] btnRunTreeGAClick
[2824] ParseConstrainedExp
[2824] StandardizedExp
[2824] StandardizedExp
[2824] StandardizedExp
[2824] StandardizedExp
[2824] StandardizedExp
[2824] FormClose
[2824] FormDesttroy
[3832] WinMain
[1036] WinMain
[3760] WinMain
[2752] CXLSocket::Create
[2752] CXLSocket::Connect
[2752] CXLSocket::GetHostByName Begin: tips.xunlei.com
[2752] CAsyncDNS::Instance Begin
[2752] CAsyncDNS::Instance End
[2752] GetHostByName::GetHostByName: tips.xunlei.com Begin
[2752] GetHostByName::Not Found asyn_dns.dll, Use Thread to GetHostByName
[2752] ThreadGetHostByName: tips.xunlei.com
[2752] CXLSocket::GetHostByName End
[2752] CXLSocket::DoConnect
[2752] CXLSocket::DoProxyConnect
[2752] CXLSocket::Send, Length=76
[2752] CXLSocket::Recv, nLength = 12
[2752] CXLSocket::WSAEnumNetworkEvents FD_READ_BIT ok, start recv data 12
[2752] CXLSocket::Recv, nLength = 31
[2752] CXLSocket::RecvAnyLength, Read 31
[2752] CXLSocket::Close: 2764
[2888] WinMain
[2888] WinMain CreateForm
[2500] WinMain
[2500] WinMain CreateForm
[3916] WinMain
[3916] WinMain CreateForm
[3864] WinMain
[3864] WinMain CreateForm

出错现象同前,未出现更新的出错信息!不知错在哪里?
CACACACACA 2010-01-02
  • 打赏
  • 举报
回复
既然是主窗体, 把这行注释掉

//Action = caFree;
xufs 2010-01-02
  • 打赏
  • 举报
回复
CppFile君:
eureklog哪个版本已有破解的? 在哪下载?
据网上介绍,其查错文件是通过电邮传回的,而电邮软件是有所选择的?目前我们所用的电邮软件,是学校的统一配备的。可行吗?若不行,怎么办?
麻烦您给予指教,能否简单介绍其使用方法,给出好的网上资料也可(我搜索的很久,也没找到顶用的)。谢谢!
xufs 2010-01-02
  • 打赏
  • 举报
回复

ccrun君:
我用dbgview查错,在主窗口关闭时,发现存在内存泄漏,即
00000087 9:32:52 [484] FormDestroy
00000088 9:33:00 [484] Error 00001. 0x300010 (Thread 0x08D4):
00000089 9:33:00 [484] Resource leak: The object array (0xDFC5E0) was never deleted
00000090 9:33:00 [484]
00000091 9:33:00 [484] The object array (0x00DFC5E0) [size: 45 bytes] was created with new[]
00000092 9:33:00 [484] Call Tree:
00000093 9:33:00 [484] 0x0041D2EC(=XuFXEA.exe:0x01:01C2EC) E:\myBCBFile\XuExp_TreeParser VCL\ExpParser.cpp#1389
00000094 9:33:00 [484] 0x0041FA47(=XuFXEA.exe:0x01:01EA47) E:\myBCBFile\XuExp_TreeParser VCL\ExpParser.cpp#2343
00000095 9:33:00 [484] 0x00424F06(=XuFXEA.exe:0x01:023F06) E:\myBCBFile\XuExp_TreeParser VCL\ExpParser.cpp#4576
00000096 9:33:00 [484] 0x00402C70(=XuFXEA.exe:0x01:001C70) E:\myBCBFile\newXuEA\XuEA_Main.cpp#878
00000097 9:33:00 [484] 0x0046D518(=XuFXEA.exe:0x01:06C518)
00000098 9:33:00 [484] 0x0043B7B9(=XuFXEA.exe:0x01:03A7B9

但如何定位出错之处? The object array (0xDFC5E0) was never deleted
即是哪个数组未释放?能否找出0xDFC5E0object array ?
E:\myBCBFile\XuExp_TreeParser VCL\ExpParser.cpp#2343
E:\myBCBFile\XuExp_TreeParser VCL\ExpParser.cpp#4576
E:\myBCBFile\newXuEA\XuEA_Main.cpp#878
难道是这些?可这些是组件,行数如何确定?
望您指教,谢谢
laowang2 2009-12-16
  • 打赏
  • 举报
回复
考虑把运行库带上吧。
xufs 2009-12-16
  • 打赏
  • 举报
回复
真急,没人能解决该问题吗?
打开CodeGuard,编译成非独立运行的exe文件(选中Use dynamic RTL ,Build with runtime packages和点击Release按钮)时,可正常运行。但关闭主窗口时,出错;

打开MultipleHumpGA.cgl见:
Error 00001. 0x400000 (Thread 0x0AA0):
Exception 0xEEDFADE:
Call Tree:
0x7C812AFB(=kernel32.dll:0x01:011AFB)
0x40013F6C(=VCL50.BPL:0x01:012F6C)
0x4006DBDE(=VCL50.BPL:0x01:06CBDE)
0x4006C971(=VCL50.BPL:0x01:06B971)
0x0041E495(=MultipleHumpGA.exe:0x01:01D495) C:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\VCL\forms.hpp#940
0x0041DB82(=MultipleHumpGA.exe:0x01:01CB82) C:\PROGRAM FILES\BORLAND\CBUILDER5\INCLUDE\exceptio.h#0

forms.hpp 有问题? 程序停留在 forms.hpp的
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { } 。

不选Use dynamic RTL ,Build with runtime packages和点击Full Debug按钮, 编译成独立运行的exe文件。然后点击exe文件,连主窗口都不出现,立即就出错:
‘Project MultipleHumpGA.exe raised exception class EAccessViolation with message'Access violation at address 74DB0DE8. Read of address 74DB0DE8'

打开MultipleHumpGA.cgl见:
Error 00001. 0x400000 (Thread 0x0E40):
Exception 0xEEDFADE:
Call Tree:
0x7C812AFB(=kernel32.dll:0x01:011AFB)
0x004C0282(=MultipleHumpGA.exe:0x01:0BF282)
0x004C0453(=MultipleHumpGA.exe:0x01:0BF453)
0x004BFD7A(=MultipleHumpGA.exe:0x01:0BED7A)
0x004BFD5C(=MultipleHumpGA.exe:0x01:0BED5C)
0x004C386B(=MultipleHumpGA.exe:0x01:0C286B)

ccrun.com 2009-12-16
  • 打赏
  • 举报
回复
dbgview是sysinternals(现在算M$了)出品的工具
http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
CppFile 2009-12-16
  • 打赏
  • 举报
回复
eureklog,装这个调试软件看看,
xufs 2009-12-16
  • 打赏
  • 举报
回复
考虑把运行库带上吧。
------会给用户添麻烦?!
xufs 2009-12-15
  • 打赏
  • 举报
回复
to ccrun 和 wwp3321君:

我的程序是进化算法函数优化程序。
主窗口关闭函数是:
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
/* 多窗口程序,关闭主窗口千万别调用析构函数,要调用主窗口的OnClose事件
for example:
MainFormClose()
{....}
*/
ExitLoop = true;

if(MinPenalty!=NULL)
{
delete[] MinPenalty;
MinPenalty = NULL;
}
ShowMessage("MinPenalty");
if(MaxPenalty!=NULL)
{
delete[] MaxPenalty;
MaxPenalty = NULL;
}
if(ExpTable!=NULL)
{
delete ExpTable;
ExpTable = NULL;
}
if(SubjectExpTable!=NULL)
{
delete SubjectExpTable;
SubjectExpTable = NULL;
}

if(frmChart!=NULL)
{
delete frmChart;
frmChart = NULL;
}
if(tdsrc!=NULL)
{
delete tdsrc;
tdsrc = NULL;
}
if(style != NULL)
{
delete style;
style = NULL;
}
if(MathGA1!= NULL)
{
delete MathGA1;
MathGA1 = NULL;
}
if(ExpTreeParser1!=NULL)
{
delete ExpTreeParser1;
ExpTreeParser1 = NULL;
}
ShowMessage("delete ExpTreeParser1");

/*
if(tree != NULL)
{
delete tree;
tree != NULL;
}
*/

Action = caFree;
ShowMessage("caFree");
}
//---------------------------------------------------------------------------
在未编译成独立运行的执行文件时,run程序,但未执行进化算法就关闭主窗口时,就出现
‘Project MultipleHumpGA.exe raised exception class EAccessViolation with message'Access violation at address 74DB0DE8. Read of address 74DB0DE8'。
FormClose中的代码如上,中间未出错。最后程序停止在
forms.hpp
/* TCustomForm.Destroy */ inline __fastcall virtual ~TForm(void) { }

ccrun君:
dbgview工具在哪里可得到?
wwp3321 2009-12-14
  • 打赏
  • 举报
回复
FormClose和FormDestroy函数中应该有代码,F5加断点,F8一步一步执行下去,哪步出错就知道了。
ccrun.com 2009-12-14
  • 打赏
  • 举报
回复
在程序中加入多行OutputDebugString,输出不同的字符串,判断程序执行到哪里的时候出错。

提示:用dbgview工具查看OutputDebugString输出的信息。
xufs 2009-12-14
  • 打赏
  • 举报
回复
打开CodeGuard,编译独立的执行文件时,出现“CodeGuard delected error(s) in the program. A log file will be created.”,此说:程序中的错误被CodeGuard检测到,一个长文件将创建。但该这个长文件放在哪里?
按确定后,又出现“:“应用程序发生异常 未知的软件异常 (0x0eedfade), 位置为 0x7c812afb.”。

编译成独立运行的exe文件时,点击exe文件,根本无法运行,所以无法排错!
xufs 2009-12-13
  • 打赏
  • 举报
回复
谢谢指教!我试一下。
ccrun.com 2009-12-12
  • 打赏
  • 举报
回复
检查软件关闭时的代码,加一个断点,F8逐步一下。必要时可以屏蔽数行代码看是否仍然出错。

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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