gpt4 book ai didi

asp.net - 一个用户的生产 ASP.NET webapp 错误,无法在开发中重现 - 我该如何调试?

转载 作者:行者123 更新时间:2023-12-01 05:40:41 25 4
gpt4 key购买 nike

我继承了一个面向客户的 asp.net Web 应用程序,客户可以在其中将文件上传到我们的文件服务器。除了一个人之外,它适用于所有用户。两周前,她尝试上传文件并收到以下错误:

Object reference not set to an instance of an object.



错误继续描述导致错误的代码行。但是,这是在我们的生产,外部环境中,并且我已关闭调试。所以这个信息,我假设或多或少是废话(错误报告的代码行对我来说真的没有意义,因为它是错误的原因)。

我知道正在访问的内容为 null,但我无法在我的开发环境中重现该错误,并且它对我们的其他用户群运行良好。同一用户两周前遇到了错误,然后昨天再次尝试使用不同的文件并收到相同的错误。

我知道这一切听起来很模糊,但我想我的问题是有人对如何跟踪用户的执行到错误有什么好主意,以便我可以准确地了解哪行代码是真正导致它的?就像我说的,我无法在开发中、生产中、内部、外部重现错误,并且没有其他用户遇到问题。我唯一的想法是向面向客户的生产站点发布调试版本,但我真的不想这样做。谢谢!

最佳答案

  • 您确定您在异常中获得的信息是错误的吗?做出这个假设很容易,我们都做过,但当你花一点时间研究它时,才被证明是错误的。
  • 确保您已部署 PDB(调试符号)。即使站点是在“发布”而不是“调试”中构建的,您仍然可以将它们推出,以确保您在堆栈跟踪中获得适当的行号。
  • 确保您部署了 匹配 .PDB文件,不匹配的文件将没有任何用处。
  • 保留 .PDB版本控制下的文件以及您的可发布文件,如果您同时拥有这两个文件以及该特定版本的代码(即,将您的编译输出和 .pdb 视为您的源代码),则可以更轻松地测试问题。
  • 使用 log4net 之类的东西向记录日志的代码添加一些额外的工具(不要编写自己的日志记录系统 - 其他人比你或我更擅长它!),它会在遇到问题的区域周围记录尽可能多的状态问题。
  • 使其可以根据配置设置打开或关闭日志记录。 log4net 可以很容易地做到这一点。
  • 确保您的日志代码在使用它们之前检查它检查的所有对象是否为空,这样您就不会以 NullReferenceException 告终。正在 造成 通过您的日志记录代码。
  • 关于asp.net - 一个用户的生产 ASP.NET webapp 错误,无法在开发中重现 - 我该如何调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5731671/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com