问题标签 [error-reporting]

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 投票
2 回答
548 浏览

javascript - 浏览器不再报告 js 错误 - YUI 历史管理器

我正在使用 YUI 的浏览器历史管理器,并且我的浏览器不再报告运行时错误。他们仍然会在错误控制台中显示解析错误,但如果我调用一个虚假函数,例如,在某个事件处理程序中,浏览器似乎会停止所有 js 处理。当我遇到错误时,即使是萤火虫的调试器也会退出。还有人看到这个吗?还是YUI?

0 投票
1 回答
602 浏览

yui - YUI CustomEvent 没有报错

有谁知道如何获取以下内容以报告 javascript 错误?(任何浏览器)


0 投票
4 回答
269 浏览

php - 当网站遇到错误时阻止自动生成的电子邮件泛滥的技术

对于我当前的 Web 开发项目,我正在实施一个后端系统,该系统将标记错误并自动向管理员发送一封电子邮件,其中包含有关所发生事件的详细信息。捕获错误并使用适当的错误信息生成电子邮件非常简单;但是当人们考虑某些错误类型时会出现问题,特别是如果该站点被频繁访问。

考虑几个例子:

  1. 意外的数据库中断,导致 Web 服务器上的所有脚本都无法连接。如果说数据库服务器需要 2 分钟(120 秒)才能重新联机,并且 Web 服务器以 10/秒的速率接收唯一请求,那么在数据库服务器重新联机所需的时间内,管理员会发送电子邮件将被 1200 封相同的电子邮件淹没,所有这些电子邮件都在尖叫着无法连接到数据库。
  2. 某处脚本中的错误设法通过测试偷偷摸摸,并且是完全搞砸内容生成的各种错误,并且仅在特定的情况下发生(例如每 100 个请求一次)。再次使用 10/秒的唯一请求率意味着管理员将每 10 秒收到关于相同错误的相同电子邮件,直到它被修复。

我可以使用哪些方法/策略来防止这种情况发生?(我只对监控脚本产生的错误感兴趣,基础设施问题超出了这个解决方案的范围)

我将假设我几乎总是可以使用传递给set_error_handler设置的错误处理程序回调的一些值的摘要来唯一地识别错误。

第一个也可能是最明显的解决方案是在数据库中记录,并且仅在自上次发生后经过合理的最短时间后才发送电子邮件。这不是理想的方法,尤其是在数据库导致问题的情况下。另一种解决方案是在发生错误时将文件写入磁盘,并检查自上次修改文件以来是否经过了合理的最短时间段。除了我描述的两种方法之外,还有什么机制可以解决这个问题吗?

0 投票
8 回答
222 浏览

language-agnostic - 代码应该在多大程度上尝试解释致命异常?

我怀疑所有重要的软件都可能遇到遇到无法解决的外部问题并因此需要失败的情况。这可能是由于配置错误、外部服务器关闭、磁盘已满等原因。

在这些情况下,特别是如果软件在非交互模式下运行,我希望真正能做的就是记录错误并等待管理员阅读日志并修复问题。如果有人碰巧在此期间与软件交互,例如请求进入未能正确初始化的服务器,那么也许可以给出适当的提示来检查日志,甚至可以回显错误(取决于是否您可以判断他们是技术人员还是业务用户)。不过,我们暂时不要想太多这部分。

我的问题是,软件应该在多大程度上负责试图解释致命错误的含义?一般来说,您可以假定软件管理员有多少能力/知识,以及在记录致命错误时您应该包含多少故障排除信息和潜在的解决步骤?当然,如果运行时上下文有一些独特的东西,那么肯定应该记录下来;但是让我们假设您的软件需要通过 LDAP 与 Active Directory 通信并返回错误“ [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090334, comment: AcceptSecurityContext error, data 525, vece]”。假设维护人员能够通过谷歌搜索错误代码并弄清楚它的含义是否合理,或者软件是否应该尝试解析错误代码并记录这是由 LDAP 配置中不正确的用户 DN 引起的?

我不知道是否有一个明确的最佳实践答案,所以我很想听听各种观点。

0 投票
8 回答
4209 浏览

windows - WinQual:为什么 WER 不接受代码签名证书?

2015 年1 月 24 日编辑:现在无法使用其他受信任的证书颁发机构。一问一答并不过时:

WinQual 仍然拒绝签名:

在此处输入图像描述

当我们已经确定它是一个有效的数字签名时:

在此处输入图像描述

为了完整起见,我将在下面留下其他人所做的编辑;只是为了指出他错了。他可以忍受这种耻辱:


自 2014 年起编辑:现在可以使用其他受信任的证书颁发机构。问与答已过时。


2005 年,我尝试在 Microsoft 建立一个 WinQual 帐户,这样我就可以获取通过 Windows 错误报告 (WER) 自动提交的(如果有的话)崩溃转储文件。我不允许进行故障转储,因为我没有 Verisign 证书。相反,我有一个更便宜的,由 Verisign 的子公司生产:Thawte。


您加入的方法是:您对他们提供的示例 exe 进行数字签名。这证明您与签署应用程序的签名者是同一个签名者,他们从野外获得了崩溃转储。

在密码学上,需要私钥才能在可执行文件上生成数字签名。只有该私钥的持有者才能为匹配的公钥创建签名。谁生成了该私钥并不重要。这包括从以下位置生成的证书:

然而微软的 WinQual 只接受威瑞信生成的数字证书。甚至 Verisign 的子公司都不够好(Thawte)。

谁能想到微软不想接受代码签名证书的任何技术、法律或道德原因?WinQual 网站说:

为什么 Winqual 会员资格需要数字证书?

数字证书有助于保护您的公司免受试图冒充您的员工或以其他方式对您的公司实施欺诈行为的个人的侵害。使用数字证书可以证明用户或组织的身份。

Thawte 数字证书是否不安全?


两年后,我向 WinQual 发送了提醒通知,我一直在等待能够获得我的故障转储。WinQual 团队的回应是:

你好,

感谢您的提醒。我们已通知相关人员这仍然是一个请求。


2008 年,我在 Microsoft 支持论坛上提出了这个问题,得到的回应是:

我们现在只设置接受 VeriSign 证书。我们对支持其他类型的证书的需求并不强烈。

不“设置”接受其他类型的证书可能意味着什么?

如果签署 WinQual.exe 测试应用程序的密钥的指纹与签署可执行文件的指纹相同,那么你在野外得到的故障转储:证明 -它们是我的故障转储,把它们给我。

与所有其他数字签名相反,并没有一个特殊的 API 来检查 Verisign 数字签名是否有效。无论谁生成密钥,有效的签名都是有效的。

Microsoft可以信任签名者,但这与身份不同。


所以这是我的问题,谁能想到 WinQual 没有设置为支持数字签名的任何实际原因?

一个人推测答案是他们只是懒惰:

我不知道,但我会假设运行 winQual 系统的团队是一个实时团队,而不是一个开发团队——例如,面向维护现有系统的个性和技能。不过我可能是错的。

他们不想做改变它的工作。但是任何人都可以想到需要改变的东西吗?无论生成密钥是什么,这都是相同的逻辑:“指纹是否匹配”。

我错过了什么?


更新

很高兴听到其他开发人员的故事。这样我就知道我并不孤单,这个问题可以作为微软改变的工具。即使我最初的意图是抱怨咆哮,为了保持这个有效的 StackOverflow 问题,我正在寻找微软只能接受 Verisign 证书的技术原因。

加密 API 不关心颁发证书的公司的名称是什么:它只关心签名者链返回到受信任的根。

微软没有使用已建立的加密基础设施,而是仅限于威瑞信,这可能会发生什么?

如果有人能指出任何博客条目,其中项目经理或开发人员解释了原因,我也许会感到满意。


更新二

人们似乎错过了我的问题的重点。Windows 已经拥有代码基础结构以确保数字签名证书受到根授权机构的信任。这是我们签名的可执行文件之一的数字签名屏幕截图。

您可以看到我们的证书是由 Thawte 的 Code-Signing authority 证书签名的,而该证书又是由 Thawte 签名的:

替代文字

Windows 默认附带“解冻”证书:

替代文字

Thawte Premium Server CA足够好,Windows 和 Internet Explorer 的每个副本都已经信任它。并且已经有一个既定的 API 来检查证书是否有效(即受信任)。

当 WinQual 人出现时,他们不得不竭尽全力避免检查正确的方法,而是推出了自己的解决方案,仅将 Verisign 硬编码为受信任的根。为什么他们会竭尽全力忽略其他受信任的根权限,即在运行其代码的 Windows 机器上提供的权限,而是硬编码 Verisign?

他们没有像其他人那样做(Windows Explorer、Firefox、Chrome、Internet Explorer、Opera、CertMgr 等),而是专门只允许 Verisign。我的问题是为什么。

Why would WER not accept code-signing certificates?

如果它只是:

  • 因为最初写它的人不知道正确的方法离开他的头顶
  • 而不是花费大量时间研究正确的方法
  • 他只是把东西扔在一起
  • 只是为了测试,他只硬编码了一个签名者
  • 完全打算稍后回来并修复它
  • 但代码现在正在运行
  • 它在没有被修复的情况下上线了
  • 没有人愿意承担破坏它的责任
  • 没有人愿意花钱修理它
  • 并且没有足够的客户抱怨将其作为重中之重
  • 即使有很多人抱怨,买一个威瑞信也只要 99 美元
  • 所以你不能放手去买一个威瑞信吗?

……这样就好了。除了我不相信。我不相信这是投入生产的测试代码。我觉得这是一个有意识的、具体的决定,让他们忽略了其他签名者。他们所做的,并将继续,只对威瑞信表示敬意。

但是对于我的生活,我想不出原因。

0 投票
4 回答
1546 浏览

python - 防止 wxPython 显示“未处理的异常”对话框

我有用 Python 和 wxPython 编写的复杂 GUI 应用程序。

我希望它通过 Windows Vista 认证,因此它必须以一种导致 Windows 错误报告对话框(询问“你想向 Microsoft 发送报告吗? ”)出现的方式崩溃。这与“ Certified for Windows Vista Test Cases ”文档中的第 32 号测试用例有关。

ThreadHijacker不幸的是,当我使用工具 wxPython使我的应用程序崩溃时,会显示如下消息:

如何防止 wxPython 显示此消息?我有 custom sys.excepthook,但似乎在我的 except 钩子可以干扰之前显示了这个对话框。

编辑:

wxWidgets文档wxAppConsole::OnExceptionInMainLoop被调用,并在 MSW 下显示一些精美的对话框,允许用户在不同的选项之间进行选择。然而,似乎 wxPython 不允许重载该函数......有谁知道如何在 wxPython 中更改wxAppConsole::OnExceptionInMainLoop的默认行为?
我更喜欢 Python 级别的解决方案,而不是 C/C++ 的解决方案

编辑2:

总而言之,我在 wxPython 邮件列表中询问过,Robin Dunn 回答说他会考虑在 wxPython 的下一个版本中使 wxAppConsole::OnExceptionInMainLoop成为可覆盖的。由于迫不及待,我不得不编译我自己的 wxPython 版本,它不包含该函数。事实证明, 可以通过正确设置编译标志来启用/禁用wxAppConsole::OnExceptionInMainLoop函数的存在。

0 投票
5 回答
12031 浏览

php - PHP 警告:标头已在未知中发送

我正在寻找可能触发以下 PHP 警告的内容:

PHP 警告:无法修改标头信息 - 标头已在第 0 行的未知中发送

0 投票
3 回答
1134 浏览

windows-xp - 如何从“请告知 Microsoft”对话框中获取错误报告?

我编写的程序在启动时崩溃。(赢 XP)。

一个对话框“请告诉微软这个问题”。出现。我想被告知这个问题,因为它是我的应用程序。

事情是,点击(点击链接:'查看错误报告的内容'),“错误报告内容”对话框不允许我的客户将其内容复制到剪贴板。

您知道用户如何获取此报告的副本以转发给开发人员吗?

0 投票
3 回答
939 浏览

php - PHP 中的集中式错误报告

有没有办法在 PHP 中集中处理错误报告?我希望通过电子邮件收到我的应用程序引发的所有错误的通知。

为整个应用程序实现这一目标的最佳方法是什么?

谢谢

0 投票
1 回答
184 浏览

ruby - 是否有任何模块或内置函数可以在 Ruby 中进行错误报告?

只是想知道是否有任何内置的方法来处理 Ruby 中的错误报告?PHP 自己做,Perl 和 Python 你可以导入模块来使用。

列维