vue中生产模式和调试模式_为什么在生产中进行调试是如此诱人?

vue中生产模式和调试模式

生产调试

为什么在生产中进行调试是如此诱人?

在我的第一份工作中,我要做的任务之一是修复一个错误,该错误过去在非常复杂的生产系统中有时会发生。 那很简单! - 我想。 我将在开发环境中重现同样的情况,找到虚线,实施快速修复,然后完成! 但是,事实证明,无法复制与生产中完全相同的场景-因此一段时间后,我放弃了这个想法。 我被迫花费数天时间分析日志并试图关联许多不同的事件,以弄清可能发生的事情。 很快,我意识到这就像在大海捞针中一样乏味。 经过几天没有结果的结果,我得出的结论是,我需要在这里和那里添加更多的日志记录,然后等待几天甚至几个月,以查看该错误是否再次发生。 然后,我认为,与开发应用程序时使用的复杂工具相比,在生产中寻找错误某种程度上是粗糙的。 您正在实施一项新功能,并且看到服务返回的结果不是您所期望的? 您只需放置几个断点,然后单击“调试”按钮即可! 片刻之后,您确切地知道发生了什么。 在生产环境中做同样的事情很棒吗?

为什么在生产中进行调试是如此困难?

等一会儿! –您可能已经想到了。 但是我们不是在大多数现代IDE中都具有远程调试功能吗? 我们不能像在本地环境中那样仅连接到正在运行的生产应用程序并对其进行调试吗? 尽管有可能,但另一个问题出现了:我们的大多数业务应用程序每秒处理许多请求。 当对应用程序进行远程调试时,没有简单的方法可以控制在任何地方触发的断点。 您可以想象,当我们决定调试它时,我们不想阻止所有用户使用我们的应用程序。 很多时候,我们也不能仅仅强迫我们的应用程序重现昨天发生的错误-有时唯一的方法就是等待直到它再次出现在我们的一个用户身上。 因此,在生产环境中保持远程调试会话而无须严格控制断点的触发方式,就像在森林中放置地雷并邀请我们的用户穿越地雷一样。

最重要的是–一种更安全的方式

FusionReactor是一个应用程序性能监视器,具有许多高级功能,您通常不会在监视解决方案中找到这些功能。 生产调试器是其中之一,该调试器旨在允许您从生产运行时环境中获取底层调试信息。

使用某些传统的调试器时,您将面临的主要问题之一是,一旦设置了断点,它将对跨越代码点的任何线程触发。 FusionReactor通过采用一系列控制断点触发方式的技术来克服这一问题。 例如,它可以限制给定断点将触发的次数(线程),从而解决了影响太多用户的问题。 需要更多控制方式吗? 您甚至可以配置一个断点,以从特定的IP地址(会话)向用户触发,或者在特定变量与值匹配或发生特定异常时触发。 但是,如果在我们团队中没人在看的夜晚触发断点怎么办? FusionReactor允许您定义线程暂停超时,因此,如果您在特定时间内不截取暂停的线程,则调试器将释放锁定并允许线程继续执行。 当与线程限制一起使用时,这可以将可能的影响减少到仅一个线程,并且仅持续n秒。

另一个好处是,FusionReactor可以在触发触发器时发送带有堆栈跟踪和变量的电子邮件。 这为您提供了一种非常灵活,简便的方式来获取大量信息的通知,从而使调试比以往更加容易。

生产中的调试不必太麻烦。 FusionReactor带有完全集成的IDE样式的调试器,该调试器可直接在您的浏览器中运行-无需安装其他胖客户端即可启动远程调试。 一切都是内置的,随时可以使用。

翻译自: https://www.javacodegeeks.com/2018/05/why-debugging-in-production-is-so-tempting.html

vue中生产模式和调试模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA for Mac在MacOS模式下的编译和运行快捷键(Compile and Run Shortcut)

快捷键快捷键符号英文名称功能说明Command F9⌘F9Make project编译ProjectCommand Shift F9⌘⇧F9Compile selected file, package or module编译选择的文件、包或模块Control Option R⌃⌥RSelect configuration and run弹出 Run 的可选择菜单Control Option D⌃⌥DSel…

android基础知识

第07节 ListView 1.当我们的程序中有大量的数据需要展示的时候,就可以借助 ListView 来实现。ListView 允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕。 ListView 的简单用法 1.listView数据的添…

apache derby_Apache Derby数据库用户和权限

apache derby抽象 Apache Derby很棒! 尤其是在微服务环境中,服务的数据(可能)会缩减,并且不需要强大的RDBMS。 Derby很棒,因为它非常易于使用,特别是在涉及用户和权限时,您不需要任何…

IntelliJ IDEA for Mac在MacOS模式下的版本控制/本地历史记录快捷键(VCS and Local History Shortcut)

快捷键快捷键符号英文名称功能说明Command K⌘KCommit project to VCS提交代码到版本控制器Command T⌘TUpdate project from VCS从版本控制器更新代码CommandShiftK⌘⇧KPush commits推送提交,有问题OptionCommandK⌥⌘KPush commits推送提交Control V⌃V‘VCS’…

nutshell_Nutshell中的Java 8语言功能-第1部分

nutshell你好朋友, Java 8发布已经很长时间了,现在越来越多地被使用。 在本文中,我们将讨论以下Java 8主题。 1.功能接口 2.Lambda表达式 3.默认方法 1.功能界面 什么是功能接口? 与一种并且只有一种抽象方法的接口是功能接口…

windows server 2008 R2 命令行的方式创建用户、设置密码

一、使用命令行的方式创建用户、设置密码 (1)标准格式: net user username password / add 例如:建立一个名为lijunxuan、密码为Abc_123的用户 net user lijunxuan Abc_123 /add 二、使用命令行修改旧帐户的密码 &#xff…

IntelliJ IDEA for Mac的快速切换当前主题方案(Quick switch current scheme)

文章目录一、配色方案 (Color Scheme)二、代码样式方案(Code Style Scheme)三、键映射表,即快捷键方案(Keymap)四、视图模式/查看模式/显示模式(View Mode)五、界面外观&…

jpa避免n+1_JPA技巧:避免N + 1选择问题

jpa避免n1介绍 像JPA这样的ORM框架通过帮助我们在对象<->关系数据映射期间避免了很多样板代码&#xff0c;从而简化了我们的开发过程。 但是&#xff0c;它们还给表带来了一些其他问题&#xff0c;N 1是其中之一。 在本文中&#xff0c;我们将简要介绍该问题以及避免这些…

Windows server 2008 基础知识

1、Windows server 2008 安装形式 (1、Virtual (2、Hyper-V (3、VMware 2、对于虚拟内存的大小&#xff0c;建议为实际内存的1.5倍 3、在Windows server 2008系统中安装活动目录的命令是DCPROMO。活动目录存放在域控制器中 4、Windows server 2008支持的两种用户账户&…

Paint X for Mac的用法

文章目录快捷键图形界面介绍快捷键 快捷键说明Command A抓手Command S另存为Command T设置字体Option Command C设置画布大小 Canvas SizeOption Command I设置图像大小 Image SizeShift Command V垂直翻转 Flip VerticalShift Command H水平翻转 Flip HorizontalC…

IntelliJ IDEA for Mac如何替换文件内容中指定的关键词

按下组合键 Shift R 打开替换对话框&#xff08;如下图所示&#xff09;&#xff0c;在对话框中有两个输入框&#xff0c;上面的输入框中输入被替换的关键词&#xff0c;会在指定的范围内查找被替换的关键词&#xff0c;接着在下面的输入框中输入替换的关键词&#xff0c;然后…

海域动态监视监测管理系统_监视和管理备份系统

海域动态监视监测管理系统上一次我们建立一个强大的备份系统时 &#xff0c;现在我们将研究如何监视备份集。 我们需要验证是否正确清理了备份集&#xff08;这称为删除策略&#xff09;&#xff0c;并且它们是一致的&#xff08;称为一致性策略&#xff09;。 备份集可以包含…

Thread 线程同步、线程状态

线程概念 线程&#xff08;英语&#xff1a;thread&#xff09;是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 一、多线程介绍 1.1创建线程类 Java中通过继承Thread类来创建并启动多线程的步骤如下&#xff1a; 1.定义Thr…

jsp过滤器示例_Java 8过滤器,地图,收集和流示例

jsp过滤器示例大家好&#xff0c;许多读者给我发了电子邮件&#xff0c;写了一篇有关Java 8的地图和过滤器功能的文章&#xff0c;因为他们发现它们难以理解和使用。 即使我以前同时写过有关map&#xff08;&#xff09;和filter&#xff08;&#xff09;的博客&#xff0c;我仍…

IntelliJ IDEA for Mac如何使用单元测试Junit

文章目录测试分类Junit 使用步骤测试结果的判定常用的注解BeforeAfter测试分类 黑盒测试&#xff1a;不需要写代码&#xff0c;不需要关注程序执行具体逻辑和流程&#xff0c;给输入值&#xff0c;看程序是否能够输出期望的值 白盒测试&#xff1a;需要写代码&#xff0c;需要…

File类、递归、字节流

一、File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示&#xff0c;主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) &#xff1a;通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public File(String …

java求期望_Java 11的期望

java求期望过去的几年对Java世界一直是动荡不安的&#xff0c;在相当多的发行版中添加了各种各样的功能。 在开发人员社区中&#xff0c;人们逐渐意识到Java的开发速度不够快。 在最初的20年中&#xff0c;Java平台和Java开发工具包&#xff08;JDK&#xff09;经历了庞大&…

IntelliJ IDEA for Mac 封装字段(添加setter/getter方法)

可以利用 IDEA 对类中的字段进行封装&#xff0c;所谓“字段封装”&#xff0c;就是指通过调用方法的方式来访问字段&#xff0c;而不是直接通过“对象.字段名”的方式去访问。 例如&#xff0c;成员变量 hairColor 是一个 public 的变量&#xff0c;没有相关的 setter/getter…

JDBC预处理对象prepareStatement

JDBC预处理对象prepareStatement概述 一、SQL注入问题 SQL注入&#xff1a;用户输入的内容作为了SQL语句语法的一部分&#xff0c;改变了原有SQL真正的意义。 假设有登录案例SQL语句如下: SELECT * FROM 用户表 WHERE NAME 用户输入的用户名 AND PASSWORD 用户输的密码; 此…

bean包、entity包、mode包、domain包的区别

文章目录beanentitymodeldomain总结bean 包含的都是 JavaBean。 JavaBean 是一种 Java 语言写成的可重用组件。为写成 JavaBean&#xff0c;类必须是具体和公共的&#xff0c;并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成属性。Jav…