我知道我的问题是多维的,我可能会得到一些独立的建议,但非常感谢你所做的一切,如果这是一个新手问题,我很抱歉。
我在 Delphi RAD 10 中使用 CEF (TChromium) 浏览器。我经常在客户的生产中收到一个错误,在调试器上工作时我无法复制。显示基本Win错误信息后,系统(Win7)杀死程序,以未保存的先前工作结束。我一步步检查了代码的每个元素,请程序员同行分析,似乎这个错误只适用于CEF浏览器。每次,无论我在程序的工作中能注意到什么,错误都是一样的:
Problem signature:
Problem Event Name: APPCRASH
Application Name: MyApp.exe
Application version: 0.0.0.0
Application timestamp: 5e36d888
Module name with error: libcef.dll
Module version with error: 3.2454.1344.0
Module timestamp with error: 562d8f27
Exception Code: c0000005
Exception Offset: 001dea9b
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1045
Additional information 1: 0a9e
Additional information 2: 0a9e372d3b4ad19135b953a78882e789
Additional information 3: 0a9e
Additional information 4: 0a9e372d3b4ad19135b953a78882e789
是的,我猜这个问题可能是由很多不同的东西引起的,但我假设因为这只发生在使用浏览器时(否则程序可以完美运行),并且每次显示相同的问题时,它可能是 TChromium组件。
不幸的是,我无法理解究竟是什么导致了这个问题(libcef.dll c0000005 / 001dea9b exeption),并且在各种论坛上找到的所有线程都被终止和/或未解决。
我尝试通过显示更大的消息而不是关闭程序来对每个页面加载进行编程:
procedure LoadUrl(url: String);
begin
try
Form1.Chromium1.Load(url);
except
on E : Exception do
ShowMessage('CEF: '+E.ClassName+' error raised, with message : '+E.Message);
end;
end;
但是在调试器上工作时(再次)我没有收到任何错误,并且在生产系统上只是杀死了应用程序而没有任何错误消息。
乍一看,我想我需要一个解释:
- TChromium 组件实际上只有在我用“加载(url)”调用它时才会改变,所以我是否正确理解代码中的这个位置是我应该关注的地方?
- 我可以这样编程外部库的错误/异常吗?或者也许有其他方法可以安全地使用它们,这样错误就不会成为杀死应用程序的原因,而是会在生产上得到控制?
- 上面提到的调用 TChromium 组件的过程是否会给我比杀死我的应用程序的系统更多的信息?(当然,如果这是错误的地方,因为这似乎是最稳妥的一击)
- 我使用 EurekaLog7 工具 - 但我不明白我应该如何使用它来跟踪浏览器库错误跟踪以及在哪里调用它,甚至如何在代码中使用它。实际上,我完全不知道从哪里开始在外部库上使用它,我很乐意接受一些文档或关于阅读内容以及在哪里可以找到可以理解的示例的提示。
提前感谢您,如果这太容易或问题很愚蠢,我深表歉意。当然,我也知道,由于我没有提供完整的代码,所以分析问题会很困难,但是我想自己学习这种错误分析,所以也许你会原谅我。:)
~~补充资料
- 程序得到x32结构,在win 7 xs64下运行;
- 程序是一个简单的爬虫,其任务是将搜索页面的选定元素保存到文本文件形式;
- 可选:对我来说已经足够了,如果这个错误成功触发了我自己的关闭程序,允许简单地保存结果,应用程序可以在之后被杀死,因为调度程序会复活它;