Debugging ';阅读';通过调试编写代码

Debugging ';阅读';通过调试编写代码,debugging,f#,Debugging,F#,假设您的任务是理解一些非常复杂的软件,这些软件有一个依赖网络和一个加载的名称空间。假设它是一个编译器的控制器,或多或少没有文档记录 为了了解软件是如何工作的,是否有任何编码的概念或技术名称,可以在整个执行过程中“记录”变量的值?或者只针对给定函数的范围?我想这主要是作为一个调试工具存在的 在我的特殊情况下,我正在与F#合作,因此如果您有一个具体的参考资料也会很有帮助。您正在寻找的是支持检查者、跟踪者、观察者(全球和本地)和上下文感知评估者的工具。一些编辑器可能有插件来启用此功能。从(2017年)

假设您的任务是理解一些非常复杂的软件,这些软件有一个依赖网络和一个加载的名称空间。假设它是一个编译器的控制器,或多或少没有文档记录

为了了解软件是如何工作的,是否有任何编码的概念或技术名称,可以在整个执行过程中“记录”变量的值?或者只针对给定函数的范围?我想这主要是作为一个调试工具存在的


在我的特殊情况下,我正在与F#合作,因此如果您有一个具体的参考资料也会很有帮助。

您正在寻找的是支持检查者跟踪者观察者(全球和本地)和上下文感知评估者的工具。一些编辑器可能有插件来启用此功能。从(2017年)起,编辑器可用,其中显示了一个内联计算器。谢谢。

我通常会尝试编写(或添加额外的)单元测试,然后“从头开始重构”。我可以想象,一长串的变量和值会给你带来更多的信息过载。我的处理方法会根据代码的结构有很大的不同。在考虑因素充分的F#中,我可能只会阅读代码,而不是您建议的内容。“printf调试”、“跟踪调试”或“跟踪”,您也可以尝试将代码加载到FSI中,并以交互方式运行其中的部分。FsCheck在这里可以用来生成复杂值的任意实例,您可以将这些实例传递给函数以使其运行。我发现在VisualStudio调试器中单步执行各种测试用例非常有启发性。