VisualVM初次使用BTrace功能方法步骤
前提安装好了VisualVM,并且安装了插件BTrace(期间出现了一个小问题,那就是标签里面怎么找不到BTrace标签,后面经过实践在VisualVM的application里找到要调试的进程,然后通过右击那个进程即可找到BeTrace这个标签,来进行coding)
1、我这在esclipse里面的演示demo coding如下:
1 /** 2 * 3 */ 4 /** 5 * @author Administrator 6 * 7 */ 8 package com.lyq.demo; 9 10 import java.io.BufferedReader; 11 import java.io.IOException; 12 import java.io.InputStreamReader; 13 14 public class BTraceTest{ 15 16 public int add(int a, int b) { 17 return a+b; 18 } 19 20 public static void main(String[] argStrings) throws IOException{ 21 22 BTraceTest bTraceTest = new BTraceTest(); 23 BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 24 25 for(int i=0; i<10; ++i){ 26 reader.readLine(); 27 int a = (int)Math.round(Math.random()*1000); 28 int b = (int)Math.round(Math.random()*1000); 29 System.out.println(bTraceTest.add(a, b)); 30 } 31 32 } 33 }
View Code
2、在VisualVM里想动态调试输出日志的代码如下:
1 /* BTrace Script Template */ 2 import com.sun.btrace.annotations.*; 3 import static com.sun.btrace.BTraceUtils.*; 4 5 @BTrace 6 public class TracingScript { 7 /* put your code here */ 8 @OnMethod( 9 clazz="com.lyq.demo.BTraceTest", 10 method="add", 11 location=@Location(Kind.RETURN) 12 ) 13 public static void func(@Self com.lyq.demo.BTraceTest instance, int a, int b, @Return int result) 14 { 15 println("调用堆栈:"); 16 jstack(); 17 println(strcat("方法参数A: ",str(a))); 18 println(strcat("方法参数B: ",str(b))); 19 println(strcat("方法结果: ",str(result))); 20 } 21 22 }
View Code
3、接下来编译通过后,在eclipse里调试,或者已经放到tomcat里运行的程序运行时,VisualVM里会对应的输出你要调试的代码的结果,如图示:
转载于:https://www.cnblogs.com/luoyaqi/p/5525959.html
VisualVM初次使用BTrace功能方法步骤相关推荐
- TIA博途WINCC中给IO域添加确认功能的具体方法步骤
TIA博途WINCC中给IO域添加确认功能的具体方法步骤 在TIA博途中新建一个项目,添加一个PLC和HMI设备,这里就不再演示添加过程,在PLC默认变量表中添加一个"输出变量", ...
- win10系统复制粘贴功能失效解决方法步骤
描述:win10系统复制粘贴功能失效解决方法步骤 步骤: 方法一:重启win10资源管理器 方法二:重启词典软件
- n6pro android,360 N6Pro开启开发者选项功能的图文教程,方法步骤: 1、我
360 N6Pro开启开发者选项功能的图文教程,方法步骤: 1.我 现在很多手机上都是具备有开发者选项功能的,而只有我们需要对手机进行高级的特殊权限设置时,才会需要去把它打开:有不少的360 N6Pr ...
- 三菱FX5U与西门子S7-1200通过简单CPU通信设置实现以太网通信功能的具体方法步骤
三菱FX5U与西门子S7-1200通过简单CPU通信设置实现以太网通信功能的具体方法步骤 1. 准备工作 硬件:FX5U系列PLC,S7-1200系列PLC,以太网交换机(可选) 软件:三菱GX WO ...
- 根据title 关闭cmd 窗口_2种Win7关闭休眠功能方法
首先我们了解一下休眠,休眠其实是将内存中的数据保存在硬盘中并且关闭计算机,下次开机时会重新将这些数据恢复到内存中,便于快速启动.如果启用了"休眠"功能,会在系统盘生成一个名为hib ...
- pycharm自带python.exe_Pycharm自带Git实现版本管理的方法步骤
之前一直使用本地的git客户端,通过命令来上传.下载代码到Gitlab:每次都需要启动git客户端,敲git命令来完成,不够灵活,因为强大的Pycharm就自带git功能,可以直接在Pycharm完成 ...
- idea创建包怎么让包分层_idea创建Spring项目的方法步骤(图文)
Spring介绍 Spring概述 Spring是一个开源框架,Spring是2003年兴起的轻量级java开发框架,由Rod Johnson 在其著作 Expert One-On-One J2EE ...
- wamp增加php,新版PHPWAMP自定义添加PHP版本方法步骤
新版PHPWAMP自定义添加PHP版本方法步骤 发布时间:2020-05-08 10:19:50 来源:亿速云 阅读:210 作者:三月 本文主要给大家介绍新版PHPWAMP自定义添加PHP版本方法步 ...
- mergesort_Mergesort算法的功能方法
mergesort by Joe Chasinga 通过乔·查辛加(Joe Chasinga) Mergesort算法的功能方法 (A functional approach to mergesort ...
- android获取版本号报错,Android开发:获取安卓App版本号的方法步骤
在Android开发过程中,想要开发一个完整功能的App,各个地方的内容都要涉及到,比如获取App的系统版本号就是必须要有的功能.Android的App版本号相关内容比iOS的App版本号内容要多,而 ...
最新文章
- 国家集训队2009 书堆
- 千万级高德服务单元化方案和架构实践
- linux 协议栈之socket,Linux协议栈之BSD和INET socket层(一)
- 6.exit _exit _Exit
- 中国联通华东云数据中心—电气培训
- 什么是T4级数据中心
- 计数排序及其改进 C++代码实现与分析 恋上数据结构笔记
- Hadoop Yarn生产环境核心配置参数
- 微服务设计模式(下)
- 活代码LINQ——08
- java基础-基础类型包装类型
- matlab43个神经网络分析代码,《MATLAB 神经网络43个案
- python爬取上市公司年报信息_爬取巨潮资讯制造业公司年报数据
- github国内镜像站
- java截取固定大小图片_JAVA技巧(长字符串按指定长度截取)
- 如何安装OpenCVE
- 杰理之AI协议之CMD_SET_BLE_VISIBILITY命令格式【篇】
- 【毕业设计】室内定位系统(wifi指纹定位)
- 数据矿工学习-情感分析框架DeepEmo论文-个人中文翻译
- Leetcode天池大赛压轴题分治dp
热门文章
- docker portainer_Docker可视化管理:Portainer中文版
- 象棋python代码_python象棋_python 象棋_python象棋源码 - 云+社区 - 腾讯云
- unity 编辑器 混合使用固定布局和自动布局(二)
- mac docker nginx 配置
- Gradle引入外部资源冲突问题,Gradle版本库冲突解决
- android sh 指令_Android ADB Shell命令解析
- 7. 锁定框架(The Locking Framework)
- Prototype使用$F()函数
- 【渝粤教育】国家开放大学2018年春季 0538-21T社区护理 参考试题
- 【渝粤教育】国家开放大学2018年春季 0706-21T行政管理学导论 参考试题