代码之家  ›  专栏  ›  技术社区  ›  AngryHacker

更完整的错误日志

  •  1
  • AngryHacker  · 技术社区  · 14 年前

    当我记录错误时,通常包括堆栈跟踪。这是很好的,但通常很难知道错误实际上在哪里。

    是否可以设置一个程序来收集,可能通过反射,参数,局部变量等…发生错误时?

    2 回复  |  直到 14 年前
        1
  •  2
  •   siride    14 年前

    如果没有VS2010,则可以使用PostSharp在调用函数时编织代码来收集参数。但是,它会减慢代码的速度,所以它只对调试有用。

    编辑:(根据我刚发表的评论进行推广)

    如果您想在生产中使用它,您可以限制PostSharp编织的范围,这样它只能在某些类/名称空间/程序集(甚至函数)上运行,也可以限制在执行建议时所做的操作。有一件事我尝试过,但没有完全遵循,那就是让advice方法简单地在一个环缓冲区中记录堆栈帧信息。当发生异常时,日志记录器可以从环缓冲区中获取堆栈帧信息并生成适当的日志消息。否则,帧信息将在环缓冲区填满时被覆盖。您甚至可以使用一个堆栈而不是一个环形缓冲区,并让该堆栈随着调用堆栈的增长和收缩而增长和收缩,记录帧信息。警告:您将无法从框架代码或PostSharp无法修改的第三方代码中获取框架信息。

        2
  •  1
  •   John Saunders    14 年前

    如果您可以升级到VS2010,您可以尝试使用IntelliTrace功能,它正好做到了这一点。