modbus调试时间超时

在代码中存在超时的情况下如何使用调试器。

我的调试器王国!

因此,您一直忙于编写一个项目,一切顺利,直到出现错误为止。 您可以进入开发人员的工具箱,然后拔出调试器。 很棒–您可以设置断点,可以在出现异常时中断,还可以在运行时检查表达式。 无论等待什么挑战,您都可以肯定,调试器将为您提供帮助!

不幸的是生活并不那么轻松。 许多代码都需要某种形式的超时 -一段时间后发生的事件。 问题在于超时会破坏调试体验。 您坐在那里看着断点,想着“现在为什么x是2而不是1?” of! 超时开始,您将无法继续。 更糟糕的是,JVM本身退出了! 因此,您要经历增加超时,调试和解决问题的过程。 之后,您要么将超时返回到其原始设置,然后必须再次执行相同的繁琐过程,要么将修复意外地提交到源代码树中,从而破坏了测试甚至是生产。 在我看来,这似乎并不理想。

“出于某种原因,这是超时病,不信任任何朋友”

人们引入超时有很多原因。 我在下面列出了一些优点和缺点,而且我敢肯定,您自己还会想到一些。

  • 检查在一定时间内是否已响应异步事件。
  • 避免饿死基于时间的资源,例如线程池。
  • 您的比赛条件需要快速解决。
  • 您正在等待事件发生,并决定用硬编码假设将花费多长时间。 (在测试中最常见)

现在很明显,如果你超时被引入作为一个黑客那么它是一个很好的时间来清洁的童子军的代码。 如果您需要依赖于测试中发生的事件,则应将这些测试视为API的客户端,并能够知道事件何时发生。 这可能涉及注入在事件发生时被调用的模拟程序,或订阅事件流。 如果您有比赛状况,请解决它! 我知道这很痛苦而且很辛苦,但是您是否真的想让代码库中的定时炸弹准备好在凌晨3点生成支持电话?

管理超时

前面已经说过,我们应该删除超时的不良用法,很显然,超时是完全合法的用法。 它们在事件驱动和异步代码中尤其常见。 能够与他们一起调试仍然会很好。 不管其他因素如何,良好实践都是为了使超时标准化为可在运行时设置的配置属性。 这样,当您在本地IDE与生产环境中运行时,可以轻松更改它们。 它还可以帮助管理从不同的硬件设置中遇到的不同性能属性。

将超时从代码中外部化为配置后,然后可以检测代码是否在调试器中运行,并在这种情况下将超时设置为明显更长的时间。 这样做的技巧是认识到调试器涉及运行Java代理,该代理会修改运行该程序的程序的命令行参数。 您可以检查这些命令行参数是否包含正确的代理匹配器。 下面的代码片段显示了如何执行此操作,并且已经过测试,可以在Eclipse和Intellij IDEA下工作。

RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
String jvmArguments = runtimeMXBean.getInputArguments().toString();
boolean hasDebuggerAttached = jvmArguments.contains("-agentlib:jdwp");

我可以理解为什么有些人也将其视为黑客,您通过查看自己的命令行参数然后围绕它进行调整,从而积极地发现有关您环境的某些信息。 从我的角度来看,我发现这是一种有用的技术。 它确实使在存在超时的情况下调试起来更加容易。

翻译自: https://www.javacodegeeks.com/2014/07/java-debuggers-and-timeouts.html

modbus调试时间超时

modbus调试时间超时_Java调试器和超时相关推荐

  1. Java调试器和超时

    在代码中存在超时的情况下如何使用调试器. 我的调试器王国! 因此,您一直忙于编写一个项目,一切顺利,直到出现错误为止. 您可以进入开发人员的工具箱,然后拔出调试器. 很棒–您可以设置断点,可以在发生异 ...

  2. java 调试 工具_Java调试器–权威的工具列表

    java 调试 工具 Java调试是一个复杂的空间. 调试器的类型很多,工具也很多. 在此页面中,我们将介绍7种类型的调试器之间的区别,并查看每个类别中的主要工具,以帮助您为正确的工作选择正确的工具. ...

  3. java 连接kafka超时_java – Kafka KStreams – 处理超时

    我试图使用< KStream> .process()与Time Windows.of("name",30000)批量处理一些KTable值并发送它们.似乎30秒超过了消 ...

  4. java ftp上传超时_java - Java FTP连接超时 - 堆栈内存溢出

    我正在做一个项目,修改后,稍后会将一些文件上传到FTP服务器...除了弄清楚文件的上传之外,我什么都没有. 我可以成功连接到FTP服务器,但是一旦文件上传,该程序将挂起几分钟,然后显示超时. java ...

  5. java 远程调试超时_java 远程调试

    参考: 1. 远程调试普通程序 程序打成 jar 包,使用命令行执行: java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport= ...

  6. jav中什么是组织java程序_Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指()。A.Java调试器B.Java剖析工具C.Jav...

    Java程序的执行过程中用到一套JDK工具,其中javaprof.exe是指().A.Java调试器B.Java剖析工具C.Jav 更多相关问题 "投资收益"账户属于(). A.损 ...

  7. java socket 超时_Java Socket超时浅析

    套接字或插座(socket)是一种软件形式的抽象,用于表达两台机器间一个连接的"终端".针对一个特定的连接,每台机器上都有一个"套接字",可以想象它们之间有一条 ...

  8. 跨平台PHP调试器设计及使用方法——拾遗

    之前七篇博文讲解了跨平台PHP调试器从立项到实现的整个过程,并讲解了其使用方法.但是它们并不能全部涵盖所有重要内容,所以新开一片博文,用来讲述其中一些杂项.(转载请指明出于breaksoftware的 ...

  9. 利用Win32 Debug API打造自己的调试器Debugger

    很多朋友都梦想有自己的Debugger程序,今天我们就来自己制作一个.作为一个Debugger程序,其最基本的功能框架其实就是完成2件事情:  启动目标程序.  实时监控目标程序的运行,并做出相应 ...

最新文章

  1. SAP MM 移动类型101与103+105组合混用?
  2. 跨物种脑-脑连接!听障人士通过豚鼠大脑听到了声音 | Nature
  3. Android网络传输中必用的两个加密算法:MD5 和 RSA (附java完成测试代码)
  4. CentOS下Clonezilla通过网络自动备份还原系统
  5. 天猫双11期间,阿里数据中心将由机器人完成巡检
  6. 为什么说雅虎的未来在于回归媒体的初衷
  7. C语言选择排序Selection sort算法(附完整源码)
  8. 互动交流:移动系统安全研究专题及用户关心的焦点问题调研
  9. 基于Dapper的开源Lambda扩展,且支持分库分表自动生成实体之基础介绍
  10. mysql数据库设计三大范式_数据库设计三大范式详解
  11. java替换图片中文字_Java 添加、替换、删除Word中的图片
  12. 文昌帝君 -- 《文昌帝君阴骘文》
  13. ios11+html5偏移20pt,iOS tableView内容向下偏移20pt或向下偏移64pt的问题?
  14. 机器学习之K-近邻算法
  15. python制作adobe photoshop插件_Adobe Ps 2021已上线,新功能秒杀一切插件
  16. 计算机常见网络故障,网络故障有哪些?常见网络故障处理方法
  17. OSChina 周日乱弹 ——我对象整天在家打游戏,怎么办?
  18. idea 启动时怎么选择工作空间
  19. 腾讯首席科学家-张正友:AI加速破解生命科学的重要问题
  20. 我爱SQL之数据查询

热门文章

  1. jzoj2941-贿赂【数学期望,dfs】
  2. jzoj100044-abcd【多重背包,二进制压缩,dp】
  3. jzoj3382-七夕祭【贪心,中位数】
  4. 【期望DP】概率充电器(luogu 4284)
  5. dp 树状数组 逆序元组
  6. 三个好用的并发工具类
  7. html数据复制到剪切板
  8. Java中几种常量池的区分
  9. Oracle入门(十四A)之PL/SQL 基本结构
  10. Nodejs第一讲记录