【发布时间】:2017-07-12 11:01:36
【问题描述】:
假设您的任务是了解一些非常复杂、具有依赖关系网络和已加载命名空间的软件。假设它是一个或多或少未记录的编译器的控制器。
为了了解软件的工作原理,是否有任何已编码的概念或技术名称,通过该技术可以“记录”整个执行过程中的变量值?或者可能仅适用于给定功能的范围?我想这主要是作为调试工具存在的。
在我的特殊情况下,我正在使用 F#,因此如果您有具体的参考资料也会很有帮助。
【问题讨论】:
-
我通常尝试编写(或添加额外的)单元测试,然后“从头重构”。我想一长串变量和值会给你更多的信息过载。
-
我的处理方法会因代码的结构而异。在精心设计的 F# 中,我可能只会阅读代码而不是您的建议。
-
“printf 调试”、“跟踪调试”或“跟踪”stackoverflow.com/questions/189562/…
-
您也可以尝试将代码加载到 FSI 并以交互方式运行它的各个部分。 FsCheck 在此处可用于生成复杂值的任意实例,您可以将其传递给函数以使其运行。
-
我发现在 Visual Studio 调试器中单步调试各种测试用例非常有启发性。