jdwp-event command Set

  • Event Command Set (64)
    • Composite (100)

事件命令集 (64)
复合命令 (100)
目标虚拟机中的给定时间可能会发生多个事件。 例如,给定位置可能有多个断点请求,或者您可能单步执行到与断点请求相同的位置。 这些事件作为复合事件一起传递。 为了统一,即使只有一个事件要报告,也始终使用复合事件来传递事件。
组合在复合事件中的事件受到以下方式的限制:

仅适用于同一线程的其他线程启动事件:
线程启动事件
仅适用于同一线程的其他线程死亡事件:
线程死亡事件
仅与其他类一起为同一类准备活动:
类准备活动
仅与同一类的其他类卸载事件一起使用:
类卸载事件
仅与同一字段访问的其他访问观察点事件一起使用:
访问观察点事件
仅与同一字段修改的其他修改观察点事件一起使用:
修改观察点事件
仅与其他监视器竞争同一监视器对象的输入事件:
监控竞争进入事件
仅与其他监视器竞争同一监视器对象的输入事件:
监控竞争输入事件
仅适用于同一监视器对象的其他监视器等待事件:
监控等待事件
仅适用于同一监视器对象的其他监视器等待事件:
监控等待事件
仅与发生相同异常的其他 ExceptionEvent 一起使用:
异常事件
仅与该组的其他成员在同一位置且在同一线程中:
断点事件
步骤事件
方法进入事件
方法退出事件

VM 启动事件和VM 死亡事件是自动生成的事件。 这意味着不需要使用 EventRequest.Set 命令来请求它们。 VM Start 事件表示 VM 初始化完成。 VM 死亡事件表示 VM 终止。如果在自动生成的事件发生时连接了调试器,则该事件会从目标 VM 发送。 还可以使用 EventRequest.Set 命令请求自动生成的事件,因此当事件发生时,将从目标 VM 发送相同事件类型的多个事件。自动生成的事件在事件数据中的 requestID 字段设置为 0 的情况下发送 事件数据中的 suspendPolicy 字段的值取决于事件。 对于自动生成的 VM 启动事件,未定义 suspendPolicy 的值,因此是特定于实现或配置的。 例如,在 Sun 实现中,在启动时将 suspendPolicy 指定为 JDWP 代理的一个选项。自动生成的 VM 死亡事件会将 suspendPolicy 设置为 NONE。

eventKind 可能由如下类型 :

(1 ) Case VMStart - if eventKind is JDWP.EventKind.VM_START:

目标 VM 初始化的通知。 在主线程启动之前和执行任何应用程序代码之前接收此事件。 在此事件发生之前,已执行大量系统代码并加载了许多系统类。 即使没有明确请求,此事件始终由目标 VM 生成。

   (2) Case Breakpoint - if eventKind is JDWP.EventKind.BREAKPOINT:

目标虚拟机中的断点通知。 断点事件是在执行其所在位置的代码之前生成的。

(3)Case SingleStep - if eventKind is JDWP.EventKind.SINGLE_STEP:

目标 VM 中步骤完成的通知。 步骤事件是在执行其所在位置的代码之前生成的。

(4)Case MethodEntry - if eventKind is JDWP.EventKind.METHOD_ENTRY(方法步入):

目标 VM 中方法调用的通知。 该事件在调用方法中的任何代码执行之前生成。 为本地(native)和非本地(non-native)方法生成方法进入事件。
在某些 VM 中,如果方法作为线程初始化的一部分被调用,则特定线程的方法进入事件可能会在其线程启动事件发生之前发生。

(5)

Case MethodExit - if eventKind is JDWP.EventKind.METHOD_EXIT(方法退出): 

目标 VM 中方法返回的通知。 该事件在方法中所有代码执行完毕后生成,但该事件的位置是方法中最后执行的位置。 本地(native)和非本机(native)方法都会生成方法退出事件。 如果方法因抛出异常而终止,则不会生成方法退出事件。

(6)

Case MethodExitWithReturnValue - if eventKind is JDWP.EventKind.METHOD_EXIT_WITH_RETURN_VALUE:

目标 VM 中方法返回的通知。 该事件在方法中所有代码执行完毕后生成,但该事件的位置是方法中最后执行的位置。 本机和非本机方法都会生成方法退出事件。 如果方法因抛出异常而终止,则不会生成方法退出事件。

从 JDWP 1.6 版本开始。

(7)

Case MonitorContendedEnter - if eventKind is JDWP.EventKind.MONITOR_CONTENDED_ENTER:

通知目标 VM 中的线程正在尝试进入已被另一个线程获取的监视器。 需要 canRequestMonitorEvents 功能 - 请参阅新功能。

从 JDWP 1.6 版本开始。

(8)

Case MonitorContendedEntered - if eventKind is JDWP.EventKind.MONITOR_CONTENDED_ENTERED:

目标VM中的线程在等待另一个线程释放后进入监视器的通知。 需要 canRequestMonitorEvents 功能 - 请参阅新功能。

从 JDWP 1.6 版本开始。

(9)

    Case MonitorWait - if eventKind is JDWP.EventKind.MONITOR_WAIT:

线程即将等待监视器对象的通知。 需要 canRequestMonitorEvents 功能 - 请参阅新功能。

从 JDWP 1.6 版本开始。

(10)

Case MonitorWaited - if eventKind is JDWP.EventKind.MONITOR_WAITED:

目标 VM 中的线程已完成等待的通知 需要 canRequestMonitorEvents 功能 - 请参阅新功能。 一个监控对象。

从 JDWP 1.6 版本开始。

(11)

Case Exception - if eventKind is JDWP.EventKind.EXCEPTION:

目标 VM 中的异常通知。 如果异常是从非本地方法引发的,则异常事件将在引发异常的位置生成。 如果异常是从本地方法引发的,则异常事件将在引发异常后到达的第一个非本地位置生成。

(12)

Case ThreadStart - if eventKind is JDWP.EventKind.THREAD_START:

目标虚拟机中新运行线程的通知。 新线程可以是调用 java.lang.Thread.start 的结果,也可以是通过 JNI 将新线程附加到 VM 的结果。 该通知由新线程在执行开始前的某个时间生成。 由于这个计时,有可能在接收到该事件之前接收线程的其他事件。 (值得注意的是,方法进入事件和方法退出事件可能在线程初始化期间发生。VirtualMachine AllThreads 命令也可能在收到线程启动事件之前返回线程。

请注意,此事件没有提供有关线程对象创建的信息,该线程对象可能已经发生得更早,具体取决于正在调试的 VM。

(13)

Case ThreadDeath - if eventKind is JDWP.EventKind.THREAD_DEATH:

目标 VM 中已完成线程的通知。 该通知是由垂死线程在终止之前生成的。 由于这个时间安排,{@link VirtualMachine#allThreads} 可能会在收到此事件后返回此线程。

请注意,此事件不提供有关线程对象生命周期的信息。 它可能会也可能不会很快被收集,具体取决于目标虚拟机中存在哪些引用。

(14)

Case ClassPrepare - if eventKind is JDWP.EventKind.CLASS_PREPARE:

目标 VM 中的类准备通知。 有关类准备的定义,请参阅 JVM 规范。 不会为原始类(例如 java.lang.Integer.TYPE)生成类准备事件。

准备线程。 在极少数情况下,此事件可能发生在目标 VM 内的调试器系统线程中。 调试器线程采取预防措施来防止这些事件,但在某些情况下它们是无法避免的,特别是对于 java.lang.Error 的某些子类。 如果该事件是由调试器系统线程生成的,则此方法返回的值为 null,并且如果该事件请求的挂起策略是 EVENT_THREAD,则所有线程都将挂起,并且复合事件的挂起策略将反映此更改。 请注意,上面的讨论不适用于目标虚拟机在其正常(非调试)操作期间创建的系统线程。

(15)

Case ClassUnload - if eventKind is JDWP.EventKind.CLASS_UNLOAD:

目标 VM 中的类卸载通知。

垃圾收集期间调试器后端受到严格限制,因此卸载信息受到很大限制。

(16)

Case FieldAccess - if eventKind is JDWP.EventKind.FIELD_ACCESS:

目标虚拟机中的现场访问通知。 字段修改不被视为字段访问。 需要 canWatchFieldAccess 功能 - 请参阅新功能。

(17)

    Case FieldModification - if eventKind is JDWP.EventKind.FIELD_MODIFICATION:

目标虚拟机中字段修改的通知。 需要 canWatchFieldModification 功能 - 请参阅新功能。

(18)

Case VMDeath - if eventKind is JDWP.EventKind.VM_DEATH:

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

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

相关文章

redis:数据倾斜是什么?怎么应对热点数据?

要知道什么是数据倾斜就的搞清楚redis是怎么存储和访问数据的。数据会按照一定的规则分布到不同槽上,然后槽又落在不同的机器节点上。比如把key进行crc16函数计算后的值对槽取模,然后槽会分配到不同的节点上。然后存取都会到对应的节点上去进行处理。 倾…

黑色金属冶炼5G智能工厂数字孪生可视化管控系统,推进金属冶炼行业数字化转型

黑色金属冶炼5G智能工厂数字孪生可视化管控系统,推进金属冶炼行业数字化转型。随着科技的不断发展,数字化转型已经成为各行各业发展的必然趋势。金属冶炼行业作为传统工业的重要组成部分,也面临着数字化转型的挑战和机遇。为了推进金属冶炼行…

在 Windows 上使用 VC++ 编译 OpenSSL 源码的步骤

在 Windows 上使用 VC 编译 OpenSSL 源码的步骤如下: 准备工作 安装 Visual Studio 2017 或更高版本。安装 Perl 脚本解释器。安装 NASM 汇编器。 编译步骤 下载 OpenSSL 源码。解压 OpenSSL 源码。打开命令行工具,并进入 OpenSSL 源码目录。运行以下…

Sublime text 3 配置

1.下载 打开官网链接:Download - Sublime Text或者去百度软件中心搜索sublimeText3(根据自己的实际情况下载对应的版本) 2.安装: 双击上一步下载下来的“Sublime Text Build 3083 x64 Setup.exe”,记得选择“Add to…

IT资讯——全速推进“AI+鸿蒙”战略布局!

文章目录 每日一句正能量前言坚持长期研发投入全速推进“AI鸿蒙”战略 人才战略新章落地持续加码核心技术生态建设 后记 每日一句正能量 人总要咽下一些委屈,然后一字不提的擦干眼泪往前走,没有人能像白纸一样没有故事,成长的代价就是失去原来…

2023 龙蜥操作系统大会演讲实录:《兼容龙蜥的云原生大模型数据计算系统——πDataCS》

本文主要分三部分内容:第一部分介绍拓数派公司,第二部分介绍 πDataCS 产品,最后介绍 πDataCS 与龙蜥在生态上的合作。 杭州拓数派科技发展有限公司(简称“拓数派”,英文名称“OpenPie”)是国内基础数据计…

论文发表 | 顶会顶刊的实验是如何炼成的

前言:Hello大家好,我是小哥谈。在计算机科学研究领域,尤其是当你追求顶级会议和期刊的发表时,没有什么⽐实验设计更关键了。为什么这么说?理由很简单。实验不仅仅是你⽤来 检验假设的⼿段,它更是审稿⼈会重点关注和阅读的部分,也是你验证⾃⼰研究多么创新、多么重要的内…

0221 解决万得导出数据excel无法python读入的问题

报错如下&#xff1a; TypeError: <class openpyxl.styles.named_styles._NamedCellStyle>.name should be <class str> but value is <class NoneType> 原因分析&#xff1a; 万得导出的xlsx带有某些格式&#xff0c;比如首行加粗&#xff0c;excel桌面端工…

Linux之用户和用户组

目录 一、简介 1.1 用户账号分类 二、用户 2.1 useradd 2.2 userdel 2.3 usermod 2.4 passwd 2.5 su 2.6 登出 三、用户组 3.1 groupadd 3.2 groupdel 3.3 groupmod 3.4 newgrp 四、用户账号系统 4.1 /ect/passwd 4.2 常见的伪用户如下所示 五、思维导图 …

自动驾驶---Motion Planning之LaneChange

1 背景 在Apollo中,有比较多的Decider(决策器),上篇博客《自动驾驶---Motion Planning之Decider》中笔者也大概介绍了每个Deicder的作用。 本篇博客笔者主要介绍换道的决策内容,因为在自动驾驶中(严格意义上来讲,目前还属于辅助驾驶),变道的灵活性是用户评价该功能是否…

安装和配置awscli

1、 安装awscli curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" unzip awscliv2.zip ./aws/install ln -s /usr/local/bin/aws /usr/bin/aws安装完成&#xff0c;检查awscli版本号 aws --version输出内容 aws-cli…

igolang学习3,golang 项目中配置gin的web框架

1.go 初始化 mod文件 go mod init gin-ranking 2.gin的crm框架 go get -u github.com/gin-gonic/gin 3.go.mod爆红解决

Odoo17 不再支持视图中的attrs和states

在最新的视图设计中&#xff0c;属性写法发生了改变。以前我们使用的attrs和states属性不再被支持&#xff0c;因此在现有模块的视图中&#xff0c;之前写在attrs属性中的invisiable、readonly、required等属性需要全部拆分成独立的属性表达式。 odoo17之前的写法 <field …

回调函数(Language C)

#源于指针的深入学习 对于回调函数&#xff0c;其实我们只需要了解一下函数指针即可使用回调函数了 什么是回调函数&#xff1f; 通俗的来讲&#xff0c;它是一个函数指针变量&#xff08;注意&#xff1a;它不是指针函数&#xff0c;它们是不同的一个概念&#xff09; 函数…

靡语IT:JavaScript_概述、基础

一、JavaScript 概述 javaScript 语言主要是完成页面的数据验证&#xff0c;因此它运行在客户端&#xff0c; 需要运行浏览器来解析执行 JavaScript 代码。js 是网景公司 &#xff08;Netscape&#xff09;的产品&#xff0c;最早取名为 LiveScript 最后借 java 的热度 改为 j…

C++多线程同步(上)

多线程同步 引言总述详情互斥锁示例运行结果分析条件变量示例一实现分析优化运行结果示例二实现代码运行结果示例三实现代码运行结果读写锁示例实现代码注意分析运行结果附言实现运行结果运行结果个人心得引言 项目中使用多线程,会遇到两种问题,一种是对共享资源的访问时需要…

关于运行flutter app 运行到模拟器出现异常提示

Exception: Gradle task assembleDebug failed with exit code 1 解决方案&#xff1a; 1.讲当前文件的distributionUrl值改为 https://mirrors.cloud.tencent.com/gradle/gradle-7.4-all.zip

Redis 学习笔记 3:黑马点评

Redis 学习笔记 3&#xff1a;黑马点评 准备工作 需要先导入项目相关资源&#xff1a; 数据库文件 hmdp.sql后端代码 hm-dianping.zip包括前端代码的 Nginx 启动后端代码和 Nginx。 短信登录 发送验证码 PostMapping("code") public Result sendCode(RequestP…

超市售货|超市售货管理小程序|基于微信小程序的超市售货管理系统设计与实现(源码+数据库+文档)

超市售货管理小程序目录 目录 基于微信小程序的超市售货管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、微信小程序前台 2、管理员后台 &#xff08;1&#xff09;商品管理 &#xff08;2&#xff09;出入库管理 &#xff08;3&#xff09;公告管理 …

CrossOver2024虚拟机软件的优缺点分别是什么?

CrossOver虚拟机软件的优缺点分别如下&#xff1a; 优点&#xff1a; 无需双系统&#xff1a;用户可以在Mac或Linux系统上直接运行Windows应用程序&#xff0c;无需安装双系统&#xff0c;从而节省了硬盘空间并避免了系统切换的麻烦。易于安装和使用&#xff1a;CrossOver具有…