有调试生产功能程序的实际经验吗?

2023-12-24

我感兴趣的是使用哪些工具和方法来诊断大型功能程序中的缺陷。有哪些工具有用?我目前的理解是“printf”调试(例如添加日志记录和重新部署)是通常使用的。

如果您已经调试过一个功能系统,那么它与调试使用 OO 或过程语言构建的系统有何不同?


Sadly, printf调试似乎是标准 ML、Objective Caml 和 Haskell 的实践状态。在交互式读取-评估-打印循环中需要进行一些调试,但是一旦您的应用程序达到 25,000 或 50,000 行,那么它的用处就不那么大了。

如果你足够幸运能够使用 Haskell,有一个例外: 快速检查 http://www.cs.chalmers.se/~rjmh/QuickCheck/ is 不可或缺的用于测试和调试。 QuickCheck 甚至可以用于 Haskell 和 C 代码的组合,正如使用Xmonad 窗口管理器 http://xmonad.org/.

值得注意的是,1990 年左右,Andrew Tolmach 为新泽西州的 Standard ML 构建了一个非常好的时间旅行调试器,但人们认为它不值得维护。还值得注意的是,OCaml 调试器(也是一个时间旅行调试器)一度仅适用于字节码,这很不方便,并且拒绝违反抽象障碍,这使得它毫无用处。这是大约 3.07 版本左右;也许情况有所改善。

同样是在 20 世纪 90 年代初,Henrik Nilsson 为 Haskell 构建了一个有趣的调试器,但它的主要作用是防止调试器意外更改程序的评估行为。这很有趣,但仅限于懒惰评估的小孩子。

作为使用这三种语言构建或开发过大型应用程序的人,我发现比赛状态令人沮丧.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有调试生产功能程序的实际经验吗? 的相关文章

  • Qt - 意外的 GDB 退出

    我正在尝试开发一个应用程序 该应用程序创建图像并使用双线性插值填充颜色像素 然后显示它 到目前为止我的代码如下 include
  • 使用 elm 高阶函数处理键盘事件

    我正在尝试创建一个高阶函数来创建仅捕获特定关键代码的函数 该代码的灵感来自 EvanonEnter来自他的 todomvc 实现的函数 仅捕获 Enter 函数 onKeyCode Int gt Msg gt Attribute Msg o
  • 为什么 GHC 在这里推断出单态类型,即使禁用了单态限制?

    这是由解析 f f pure 的类型 https stackoverflow com questions 55388119 resolving the type of f f pure 55388309 noredirect 1 comme
  • 在构建过程中引用自身内部的记录

    我正在尝试创建一条记录 该记录在同一构造函数中使用先前定义的字段之一来计算另一个字段的值 例如 myRecordType Foo int Bar int myRecord Foo 5 Bar Array init Foo fun i gt
  • 不同类型的列表?

    data Plane Plane point Point normal Vector Double data Sphere Sphere center Point radius Double class Shape s where inte
  • IntSummaryStatistics的summaryStatistics方法

    为什么空 IntStream 上的 summaryStatistics 方法返回整数的最大和最小值作为流中存在的最大和最小 int 值 IntStream intStream IntStream of IntSummaryStatistic
  • Cabal:使用源代码构建目录

    我有一个src目录 在这个目录中我有Main hs文件和Test目录 在里面Test我有的目录Test hs模块 我需要用 cabal 来编译它 在我的阴谋集团文件中 我有 Executable main hs or lhs file co
  • 函数式语言与语言实现的角度有何不同

    出现了全新的 函数式编程 范式 与过程式编程相比 它需要彻底改变思维模式 它使用高阶函数 纯度 单子等 我们通常在命令式和面向对象语言中不会看到这些 我的问题是如何执行这些语言与命令式或面向对象语言的不同之处在于 例如内存管理或指针等内部结
  • 使用 IntelliJ 调试 Java 进程 - 连接到套接字但不连接到目标 VM

    现在已解决 请参阅问题末尾 我正在尝试使用 IntelliJ Community Edition 的调试器来调试 Java 进程 套接字正在侦听 但是当我尝试连接时 调试过程显示以下内容 连接到目标虚拟机 地址 8003 传输 socket
  • 跟踪所有 ObjC 方法调用?

    有时 当查看别人的大型 Objective C 程序时 很难知道从哪里开始 在这种情况下 我认为记录对每个非 Apple 方法的每次调用会很有帮助 有没有办法做到这一点 基本上 在某个中心位置进行一项更改 并记录调用的每个方法 最好仅限于非
  • 为什么对本地列表求和比用“GHC -O2”对教会编码列表求和慢?

    为了测试教会编码的列表如何针对用户定义的列表和本机列表执行 我准备了 3 个基准测试 用户定义的列表 data List a Cons a List a Nil deriving Show lenumTil n go n Nil where
  • seq在haskell中代表什么

    我是 Haskell 的新手 刚刚进入惰性世界编程 我读到seq函数非常特殊 因为它强制使用严格的评估 以便在某些情况下更加有效 但我就是找不到什么seq代表字面意思 也许严格评估Q 它应该提醒您 顺序 或 顺序 因为它允许程序员指定其参数
  • 过滤路径列表以仅包含文件

    如果我有一个清单FilePaths 如何过滤它们以仅返回常规文件 即不是符号链接或目录 例如 使用getDirectoryContents main do contents lt getDirectoryContents foo bar l
  • 告诉阴谋集团主模块在哪里

    我有一个具有以下结构的项目 foo cabal src Foo Main hs foo cabal 的一部分如下所示 executable foo main is Foo Main hs hs source dirs src Main hs
  • 不理解 Monoid 定义中态射的表示法

    我试图理解什么Monoid是从范畴论的角度来看的 但我对用来描述它的符号有点困惑 这是维基百科 在范畴论中 幺半群范畴 C I 中的幺半群 或幺半群对象 M 是一个对象 M 和两个态射 M M M 称为乘法 I M 称为单位 我的困惑在于态
  • F# 核心库源代码有一个用于将元组编译为结构的标志,但我无法使其工作

    这是后续问题这个提议 https fslang uservoice com forums 245727 f language suggestions 6148669 short tuples compiled as structs up t
  • 为什么 console.log() polyfill 不使用 Function.apply()?

    我一直在看一些流行的console log 包装 填充 保罗 爱尔兰的 http paulirish com 2009 log a lightweight wrapper for consolelog 本阿尔曼的 http benalman
  • 浏览前奏的源代码会带来奇怪的情况

    我一直在寻找的定义seq并遇到了这个奇怪的事情 为什么所有这些函数都有相同 相似的定义 seq a gt b gt b seq let x x in x inline a gt a inline let x x in x lazy a gt
  • F#:如何将 Json.NET [JsonConstructor] 属性应用于主构造函数?

    我正在尝试用 F 做一些事情 比如JsonConstructorAttribute中的示例Json NET 文档 http www newtonsoft com json help html JsonConstructorAttribute
  • 如何获得具有超载字段名称的经典镜头?

    我正在尝试为具有相同字段名称的记录构建镜头 除此之外 我试图 包装 扩展 这些基本记录 并希望相同的字段名称适用于包装 扩展的记录 我相信 优雅的镜头就是这样做的 我如何让以下内容发挥作用 Data types for context of

随机推荐

  • 在音频分析中绘制频谱图

    我正在研究使用神经网络的语音识别 为此 我需要获取这些训练音频文件 wav 的频谱图 如何在 python 中获取这些频谱图 有很多方法可以做到这一点 最简单的方法是查看中提出的方法关于 Kaggle 竞赛TensorFlow 语音识别挑战
  • 按值对多维哈希进行排序并打印最高的

    我有一个存储的多维哈希 info 具有以下结构 info os id length foreach os keys info foreach id keys info os print os id gt info os id n if ke
  • 常量截断为整数

    下面的GO程序会报错 fft go 13 constant 6 28319 truncated to integer fft go 13 cannot use 7 k N type int as type float64 in assign
  • 如何在 php 中创建我的网站的日志文件? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想知道如何用 php 创建我的网站
  • UICollectionView 对陈旧数据的断言错误

    在尝试从我的集合视图中卸载一批图像 然后用另一批图像替换它们的过程中 我遇到了一个错误 其中 根据原始图像组或后续图像组是大于还是小于预期的替换图像 发生断言错误 表示 Assertion failure in UICollectionVi
  • CUDA 中的全局内存与共享内存

    我有两个 CUDA 内核可以计算类似的东西 一种是使用全局内存 myfun是一个设备函数 它从全局内存中读取大量数据并进行计算 第二个内核将该数据块从全局内存传输到共享内存 以便数据可以在块的不同线程之间共享 我使用全局内存的内核比使用共享
  • 从精明的边缘获取边界并删除图像的背景

    我正在尝试删除我正在尝试训练神经网络的图像的背景 我使用此处描述的方法运气不佳 如何从此类图像中删除背景 https stackoverflow com questions 29313667 how do i remove the back
  • 如何在 Bootstrap 模态中显示画布

    我创建了一个地图 您可以在其中通过 Javascript 预订自行车 用户应该 1 选择一个自行车站 绿色站 可以使用自行车 2 点击一个按钮 预留按钮 3 登录画布 在模式中 页面在这里 http p4547 phpnet org bik
  • 将 Android 手机中的图像和视频获取到自定义图库中

    我正在尝试创建一个自定义图库 允许用户从其 Android 设备上包含的所有照片和视频中进行挑选 我知道如何创建仅包含照片和视频的图库 但如果我想将两者结合起来 我该怎么做 我认为问题归结于我如何创建光标 为了选择所有视频 我这样创建了光标
  • 如何将数据从隔离作用域传递到父作用域?

    我对使用 AngularJS 相当陌生 我想做的是创建一个指令并从其中的父作用域调用函数 我能够完成此任务 但我似乎无法弄清楚如何通过表达式将数据从隔离范围传递到父范围 Angular 开发者指南中对此的解释有点令人困惑 该指令 app d
  • Nodemon - 排除文件

    我想从 NodeMon 的监控中排除一些特定文件 我怎样才能做到这一点 我现有的配置 nodemon all script app js options watchedExtensions js 为了让 NodeMon 忽略监控中的一堆文件
  • 使用 jQuery 以编程方式单击 链接

    我知道这个问题以前曾被问过 但在网上搜索后我似乎找不到直接的答案 the HTML a href index php jQuery 这两个都不起作用 myAnchor click or myAnchor trigger click 实现这一
  • 使用 SlimDX 设置常量缓冲区

    我一直在关注 Microsoft Direct3D11 教程 但使用 C 和 SlimDX 我正在尝试设置常量缓冲区 但不确定如何创建或设置它 我只是尝试使用常量缓冲区设置三个矩阵 世界 视图和投影 但我在每个阶段 创建 数据输入并将其传递
  • 从 C# 以编程方式创建 Excel VBA 代码和按钮

    我正在使用简单的方法 该方法将我的 DataGridView 保存到 Excel 文档 仅 1 个工作表 中 并添加 VBA 代码和一个用于运行 VBA 代码的按钮 public void SaveFile string filePath
  • Windows Phone 8.1 DatePicker 中无法将类型“%0”的实例添加到类型“%1”的集合中

    嘿 我正在使用 MVVM 模式在 Windows Phone 8 1 中开发一个应用程序 我想从以下位置获取日期日期选择器 on the 日期更改事件在视图模型中 运行程序后我收到此错误 App1 exe WinRT 中第一次出现 Wind
  • 如何在java中获取给定的日期字符串格式(模式)?

    我想获取给定日期字符串的格式 示例 我有一个像这样的字符串2011 09 27T07 04 21 97 05 00该字符串的日期格式是yyyy MM dd T HH mm ss SSS 这里我想在传递 string 2011 09 27T0
  • 在许可证页面上添加复选框和单选按钮

    我正在 Nsis 中编写脚本 我需要在许可证页面上有选项单选按钮以及用于再次确认的复选框 是否可以这样做 因为如果我尝试插入较高优先级的是复选框 而我缺少单选按钮 最好我想只修改许可证页面而不创建自定义页面 感谢您的帮助 选项A 使用修改后
  • 为什么它对造型无懈可击?

    我只想将其颜色更改为 DD4814 但我不能 顺便说一句 这是一个 分享按钮 可能是什么原因 span class st sharethis span
  • 如何更改笔记本 Rmarkdown 中的 dpi 内联代码输出

    我知道在将 rmarkdown 笔记本编织为 html 时如何更改绘图的 dpi 但是 有没有一种方法可以更改 rmarkdown 笔记本中生成的绘图的 dpi 而无需编织文档 即在处理笔记本时绘图显示为两个代码块之间的内联输出 None
  • 有调试生产功能程序的实际经验吗?

    我感兴趣的是使用哪些工具和方法来诊断大型功能程序中的缺陷 有哪些工具有用 我目前的理解是 printf 调试 例如添加日志记录和重新部署 是通常使用的 如果您已经调试过一个功能系统 那么它与调试使用 OO 或过程语言构建的系统有何不同 Sa