问题标签 [eurekalog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
408 浏览

multithreading - 在没有与 Eurekalog 对话的情况下在线程内正确记录

我有一个使用最新版本的 EurekaLog 的 Delphi 10 项目。我目前正在使用 EurekaLog 来帮助我调试生产客户端中的问题。

我注意到 EurekaLog 没有记录线程内发生的错误。在我开始阅读它之后,我发现我需要从 更改TThread为,并在我的覆盖方法TThreadEx的开头添加以下代码。Execute

尽管如此,当发生错误时,它不会在EL文件中生成事件。

如果我添加ExceptionManager.StandardEurekaError('TThrdSincArquivos.Execute => ' + ex.Message);try..except它会记录。但是堆栈跟踪显示为好像错误发生在我调用的行上StandardEurekaLog(),而不是实际发生错误的行上。这违背了整个事情的目的。

另一个问题是它显示了一个我不想要的对话框,因为错误发生在后台线程中。我只想记录它。我应该只在主线程上有错误时得到一个对话框。

如何在线程中实现这些结果?

  • 实际上用正确的堆栈记录错误。

  • 在主线程上时,显示对话框,但在线程内,只记录没有对话框。

编辑

下面是我的 EurekaLog 多线程配置

调用堆栈选项 多线程选项

这是我的线程声明:

我的线程的创建

我的执行开始

和 Execute 的结束

它拒绝将任何异常记录到 Elf 文件中。我试图在我自己的日志例程之后添加一个加薪,但它仍然没有帮助。它应该记录,但不是,除非我明确调用StandardEurekaError,但我得到了错误的堆栈,我得到了对话框。

0 投票
1 回答
260 浏览

delphi - 如何使用 EurekaLog 获取已处理异常的调用堆栈

我正在使用 Delphi 7 和 EurekaLog 7(在兼容模式下)并且只想获取已处理异常的调用堆栈,例如

这是一个多线程应用程序,所以如果可能的话,我想看看调用线程的调用堆栈。另外,既然这是一个已处理的异常,我还需要使用 EurekaLog 的OnExceptionRaise事件吗?(我不想)。

编辑: CrossThreadFunc() 被多次调用并带有一些参数,而我需要知道的正是我调用它的位置,最终导致 SomeCode() 引发异常。

0 投票
1 回答
112 浏览

delphi - 将一段 Delphi 代码转换为 C++Builder

我正在使用 Delphi/C++Builder 的 EurekaLog 错误捕获器。他们所有的例子都在 Delphi 中,我正在使用 C++Builder。下面的 Delphi 代码是导致软件异常的示例之一。我试图将其转换为下面的 C++,但我的代码是错误的。你能告诉我正确的 C++ 代码来完成这项工作吗?

来自 EurekaLog 的 Delphi 代码

我的 C++Builder 代码不起作用

0 投票
1 回答
144 浏览

delphi - Delphi EurekaLog 和 OmniThreadLibrary 不兼容?

我有一个简单的程序,它在一个单元的“初始化”中创建一个 OmniThread 工作池,并在该单元的“最终化”中销毁同一个池。只要我们不使用 EurekaLog,它就可以正常工作。如果我们包含 EurekaLog,则会在应用程序完成期间(关闭应用程序后)引发访问冲突。这种情况每 3 到 10 次程序结束才会发生一次;所以这似乎是某种时间问题。

如果我们在“正常”应用程序流程中创建工作池(而不是在单独单元的初始化和最终确定中) ,似乎一切正常。

本单元代码如下:

主要应用也很简单:

访问冲突的调用堆栈是:

我使用 OTL 和 EurekaLog 版本 7.9.1.4 update 1 hot-fix 4 的最新 master checkout。

我们创建和销毁工作池的方式是否正确?如果是这样,如果它们一起使用,是否有人熟悉 OTL/EurekaLog 中的问题?