单独的“调试”和“发布”版本?

2023-11-26

我认为最好发布您的开发人员实际测试过的软件版本;因此,我倾向于从项目/makefile 中删除“调试”目标,这样就只能构建(并测试、调试和发布)一个版本。

出于类似的原因,我不使用“断言”(另请参阅断言总是不好的吗? ...).

那里的一个人认为“调试”版本的原因是它更容易调试:但是,我反驳说,您最终可能希望支持和​​调试您发布的任何内容,因此您需要构建一个版本如果需要,您可以进行调试...这可能意味着启用调试符号,并禁用某些优化,即使在“发布”版本中也是如此。

还有人说“这是一个坏主意”;这是我几年前制定的一项政策,曾被以下因素所困扰:

  • 一些开发人员测试他们的调试版本而不是发布版本
  • 一些开发人员的编写错误仅在发布版本中出现
  • 该公司在测试不充分后发布了发布版本(是吗?ever完全足够了?)
  • 被要求调试发布版本

从那时起,我看到不止一个其他开发商店遵循这种做法(即没有单独的调试和发布版本)。

你们的政策是什么?


单独的调试和发布版本是一个好主意,因为它确实使开发变得更容易。

但调试版本应该仅用于开发,而不是用于测试。您仅测试发布版本。而且您不使用开发人员来测试这些构建,而是使用测试人员。

在我看来,这是一个简单的政策,可以两全其美。

Edit:作为对评论的回应,我认为调试和发布版本显然可以生成不同的代码。想想“-DDEBUG”与“-DNDEBUG”和“#if Defined(DEBUG)”等。

因此,测试最终交付的代码至关重要。如果你do在调试和发布版本中生成不同的代码,这意味着测试两次 - 无论是否由同一个人测试。

然而,调试符号并不是一个大问题。始终使用调试符号进行构建,保留未剥离的二进制文件的副本,但释放剥离的二进制文件。只要您以某种方式用内部版本号标记每个二进制文件,您应该始终能够识别哪个未剥离的二进制文件对应于您必须调试的剥离的二进制文件...

如何从外部源中剥离二进制文件并在调试器中加载符号取决于平台。

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

单独的“调试”和“发布”版本? 的相关文章

  • 对更改运行 PHPUnit 测试

    每当磁盘上的文件发生更改时 我想运行 PHPUnit 测试 或至少其中的一个子集 与您可以使用 进行的操作非常相似 咕噜手表 https github com gruntjs grunt contrib watch blob master
  • 如何正确使用“mvn release:prepare”?

    我尝试了这个命令 用dryrun在我的 Maven 项目上进行测试 mvn release clean release prepare DdryRun true DgenerateBackupPoms false Dtag solocal
  • 如何在 Django Rest 框架中编写“删除”操作的测试

    我正在为 Django Rest Framework API 编写测试 我一直在测试 删除 我对 创建 的测试工作正常 这是我的测试代码 import json from django urls import reverse from re
  • 如何测试某些代码在 C++ 中无法编译? [复制]

    这个问题在这里已经有答案了 可能的重复 单元测试编译时错误 https stackoverflow com questions 605915 unit test compile time error 我想知道是否可以编写一种单元测试来验证给
  • Chrome 调试器注入 javascript

    我有这样的好奇心 是否可以以某种方式在我的页面中注入 javascript 并执行它并调试它 正如您在控制台中所做的那样 但在控制台中您无法暂停并观察变量 是否可以调试我通过控制台输入的代码 为什么无法调试通过 XHR 接收的代码 Than
  • html 空格引起的非常奇怪的错误

    我在 Firefox 中遇到了一个非常奇怪的错误 我在外部文件中有一个 javascript 函数 可以在常规复杂性网站上完美运行 然而 我一直在整理一些演示示例并遇到一些奇怪的事情 html 格式如下 在编辑器中 div p Q Wher
  • Selenium 中的断言和验证

    有人可以解释一下断言和验证之间的区别吗 我知道验证意味着它检查它是否存在 如果不存在 则测试失败并停止在那里 正确吗 那么 即使断言失败了 断言还会继续吗 我已经阅读了文档 但仍然无法理解它 不 你已经搞反了 在 Selenium IDE
  • Selenium 中的“断言”与“验证”

    Selenium 执行的检查通常有两种形式 assertFoo 和 verifyFoo 据我所知 assertFoo 使整个测试用例失败 而 verifyFoo 只是记录该检查的失败并让测试用例继续进行 因此 使用 verifyFoo 即使
  • 调试自定义 Kafka 连接器的简单有效的方法是什么?

    我正在使用几个 Kafka 连接器 在控制台输出中没有看到它们的创建 部署有任何错误 但是我没有得到我正在寻找的结果 没有任何结果 无论是期望的还是否则 我基于 Kafka 的示例 FileStream 连接器制作了这些连接器 因此我的调试
  • 在 Spring Boot 测试期间替换 @Configuration 中的 @Value 属性

    Scenario 我有一个 Spring Boot 应用程序 Configuration带注释的 Spring 配置类 其中包含一些 Value带注释的字段 为了进行测试 我想用自定义测试值替换这些字段值 不幸的是 这些测试值不能使用简单的
  • Nodejs 调试生产中的错误

    我有一个在生产环境中运行的 Nodejs 脚本 我不太可能 千分之一 遇到这样的错误 TypeError value is out of bounds at checkInt buffer js 1009 11 at Buffer writ
  • IQueryable 单元或集成测试

    我有一个 Web api 并且公开了一个端点 如下所示 api 假期 name name 这是 Web api 的控制器 get 方法 public IQueryable
  • 如何在 e2e AngularJS 测试中进行文件上传?

    在我的一种观点中 我有一个文件上传控件 它支持通过拖放或单击按钮后打开的标准文件对话框上传文件 How to do this in my e2e tests1 1 Just one of the two options will be en
  • 调试VS 2005提示“操作不支持”

    我一直在调试 VS 2005 并将 启动外部程序 设置为 C Program Files Microsoft Visual Studio 10 0 Common7 IDE devenv exe 但按 F5 后出现此错误 尝试运行项目时出错
  • C++ GUI 桌面 Windows 应用程序的测试自动化工具/库/框架

    不幸的是 我有一个在 Windows 上运行的 GUI 桌面应用程序 并使用 Borland C 编译器进行编译 我知道这是一项非常古老的技术 但这就是生活 我工作的公司有很多免费的 QTP 许可证 但说实话 我不喜欢这个工具 我想用一些开
  • Xcode 9 - 框架断点

    在 Xcode 7 和 8 中 我已经能够通过在也包含框架项目的 xcworkspace 中运行包含应用程序来调试我一直在开发的框架 如果我在框架中设置断点 它们就会在运行时被触发 在 Xcode 9 beta 6 中 情况不再如此 到目前
  • 使用 pgAdmin 调试 PostgreSQL 函数

    I refer this http www postgresonline com journal archives 214 Using PgAdmin PLPgSQL Debugger html启用 PostgreSQL 服务器中的调试器
  • Java中的断点和逐步调试?

    抱歉我的问题名称很奇怪 我不知道如何寻找这个 因为我不知道这些东西是如何称呼的 Visual Studio 中至少有一个功能 您可以单击代码左侧并设置一个大红点的起点 然后运行程序 您可以通过按 f8 或 f5 实际上是不同的 f 来跟踪步
  • 如何为我的 Android Market APK 创建证书?

    我想将我的第一个 APK 应用程序上传到 Android Market 但我收到了此错误 顺便说一下 在 stackoverflow 中搜索时并没有引导我找到正确的链接 市场不接受使用调试证书签名的 APK 创建有效期至少 50 年的新证书
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui

随机推荐

  • 角度键值管道排序属性/按顺序迭代

    使用角度时keyvalue管道来迭代对象的属性 如下所示 div item key item value div 我遇到过一个问题 即属性未按预期顺序迭代 此评论表明我不是唯一遇到此问题的人 如何在 Angular 中使用 ngFor 循环
  • EditText 文本属性下方有下划线

    我想更改编辑文本下方的蓝色 我不知道它是什么属性 我尝试为其使用不同的背景颜色 但它不起作用 我在下面附上了一张图片 实际上 以编程方式设置 EditText 的下划线颜色相当容易 只需一行代码 设置颜色 editText getBackg
  • 以原子方式标记并返回数据库中的一组行

    我正在编写一个后台服务 需要处理一系列作业 这些作业作为记录存储在 sqlserver 表中 该服务需要找到最旧的 20 个需要工作的工作 where status new 标记它们 set status processing 运行它们 然
  • java.lang.ClassNotFoundException:WebDriver API

    我下载了selenium java 2 0a5 zip http code google com p selenium downloads list 并运行以下代码 package org openqa selenium example i
  • .gitattributes 和文件的单独合并策略

    我的 网络 应用程序有一个主分支和一个测试分支 这些项目几乎相同 除了一个用于设置应用程序的文件 例如 setup 每当我将一个分支合并到另一个分支时 我希望该分支保留其安装版本 也就是说 git 不应尝试合并对该文件的更改 我跟着Pro
  • 如何将控制台插入 pyGame 窗口?

    我正在制作一个文字冒险游戏 我想要 pyGame 动画和插图以及 HUD 我怎样才能插入这个控制台 Thanks 我很确定那是不可能的 如果您想要 Pygame 屏幕中的控制台 那么您必须编写自己的控制台 或者找到其他人编写的控制台 例如h
  • [方括号] 和 *星号之间的区别

    如果你编写一个 C 函数 例如 void readEmStar int arrayOfInt 与 C 函数相比 例如 void readEmSquare int arrayOfInt 使用 方括号 与 asterisk 之间有什么区别 假设
  • 能源系统的 Python GEKKO MINLP 优化:如何构建 2D 数组的中间体

    我目前正在 Python GEKKO 中实现 MINLP 优化问题 以确定三联产能源系统的最佳运行策略 当我将不同代表日的所有时段的能源需求作为输入数据时 基本上我所有的决策变量 中间变量等都是二维数组 我怀疑 2D 中间体的声明是我的问题
  • 如何使用Android的camera或camera2 API来支持新旧API版本而无需弃用注释?

    新的camera2 API让我很困惑 我想开发一个应用程序 适用于 Android API 10 21 它使用设备的相机 就像声明的那样here 我应该使用 Camera API 但是 当我尝试添加 Camera API 时 android
  • gcc 的 asm 易失性相当于 gfortran 的递归默认设置吗?

    我只是在玩递归函数C and Fortran我意识到一个简单的递归函数Fortran几乎是同类产品的两倍C 功能 现在 在讨论这个问题之前 我知道这里也有类似的问题 具体来说 为什么添加汇编注释会导致生成的代码发生如此根本的变化 工作的as
  • backbone.js 菜鸟因相互冲突的教程而感到困惑[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我是backbone js
  • 在 Wordpress XMLRPC 中附加图像以发布

    我正在使用 XMLRPC 向 Wordpress 发布帖子 我在发布缩略图时遇到问题 在调试 WordPress 代码后 我发现我的问题是由于图像未附加到帖子中而引起的 我必须在不修补 WordPress 或使用 PHP 的情况下执行此操作
  • Hibernate 和 JPA 有什么区别? [复制]

    这个问题在这里已经有答案了 当我在大学学习 Web 编程时 他们向我们介绍了 Hibernate 我们使用了一段时间 我什至有机会在公司的真实场景中使用它近 8 个月 现在我完全切换到 Java EE 6 我使用 JPA 来满足我的 ORM
  • WCF Duplex 客户端的最佳实践

    我不能否认双工异步调用的性能优势 但有些事情让我感到谨慎 我担心的是 给定一个实例化的客户端对象 WCF 是否能够知道哪个特定的客户端服务实例将接收回调参数 谁能告诉我这是否是一个好主意 如果不是为什么不呢 new DuplexChanne
  • 如何停止 http.ListenAndServe()

    我正在使用 Gorilla Web Toolkit 中的 Mux 库以及捆绑的 Go http 服务器 问题是 在我的应用程序中 HTTP 服务器只是一个组件 需要由我自行决定停止和启动 当我打电话时http ListenAndServe
  • QWidget::setLayout:尝试在主窗口“”上设置 QLayout“”,该窗口已经有布局

    我正在 PyQt4 中制作一个应用程序 这是迄今为止我的代码 import sys from PyQt4 import QtGui QtCore class MainWindow QtGui QMainWindow def init sel
  • 在 HTML 表中显示 JSON 数据

    我从服务器获取以下 JSON 字符串作为响应 city AMBALA cStatus Y city ASANKHURD cStatus Y city ASSANDH cStatus Y 这是我的 Jquery 代码 search click
  • 使用 lm 对象填充列表

    我正在尝试使用 R 中 OLS 的结果填充命名列表 我尝试过 li list for i in 1 10 li RunOne i lm y x Here RunOne是一个随机名称 指定拟合运行一个 y and x是一些预定义的向量 这会破
  • 如何在react组件中加载脚本

    我有以下脚本文件
  • 单独的“调试”和“发布”版本?

    我认为最好发布您的开发人员实际测试过的软件版本 因此 我倾向于从项目 makefile 中删除 调试 目标 这样就只能构建 并测试 调试和发布 一个版本 出于类似的原因 我不使用 断言 另请参阅断言总是不好的吗 那里的一个人认为 调试 版本