繁体   English   中英

haskell中的代码检测

[英]Code instrumentation in haskell

假设我维护连接到外部系统的复杂应用程序。 有一天它开始为某些输入返回意外结果,我需要找出原因。 它可能是DNS问题,filesytem相关问题,外部系统更改,任何事情。

假设处理量很大,在我能够识别问题的可能位置之前,我需要获得原始应用程序不会产生的详细跟踪。

如何检测现有代码,以便我(例如)可以提供某些组件或功能存在错误的非易失性证明(不是实时调试会话)。

这听起来像是一个架构/最佳实践类型的问题,而不是Haskell特有的,除非我误解了一些东西。

听起来您的应用程序需要使用日志记录系统,例如hslogger 一般方法是让代码的每个组件创建具有附加优先级的日志记录消息。 然后,您可以让应用程序以不同的方式处理不同的优先级,例如,可以在控制台上显示关键错误,而调试和信息级错误则转到日志文件。

使用Debug.Trace.traceEventDebug.Trace.traceEventIO而不是日志记录系统有时很有用,特别是如果您怀疑并发问题,因为ghc事件日志还记录有关线程生成/切换和垃圾回收的信息。 但总的来说,它不是实际日志框架的替代品。

此外,您可能希望使用assert作为完整性检查“不可能”的条件确实不会发生。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM