zoukankan      html  css  js  c++  java
  • 利用jvisualvm使用btrace进行线上调试案例

    用途:btrace主要用于线上调试。通过btrace,可在不改动代码的前提下,方便的发现以下问题:

    1.定位性能慢的接口服务;

    2.实时打印堆栈信息,定位死锁位置;

    3.定位占用大量内存空间的代码块;

    4.打印处理流程中的入参、出参信息;

    注意事项

    一.

    • 不能创建新的对象。
    • 不能创造新的阵列。
    • 不能抛出异常。
    • 不能捕捉异常。
    • 不能让任意实例或静态方法调用-只有public static方法的com.sun.btrace.BTraceUtils 类可以从BTrace程序调用。
    • 不能分配到目标程序的类和对象的静态或实例字段。但是,BTrace类可以分配给它自己的静态字段(“跟踪状态”可以变异)。
    • 不能有实例字段和方法。static public voidBTrace类只允许返回方法。所有领域都必须是静态的。
    • 不可以具有外,内,嵌套的或局部类。
    • 不可以具有同步块或同步方法。
    • 不能有环(for, while, do..while
    • 不可以延伸任意类(超类必须java.lang.Object中)
    • 不可以实现接口。
    • 不可以包含断言语句。
    • 不可以使用类文字。

    二.

    BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码
    BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码
    BTrace植入过的代码,会一直在,直到应用重启为止。所以即使Btrace退出了,业务函数每次执行时都会执行Btrace植入的代码

    安装使用

    1.安装JDK,配置JDK的环境变量;

    2.在JDK的安装路径上,打开jvisualvm.exe

    3.选择“工具”-“插件”-“可用插件”。

    注意:在第三步,可能有的机器会报错:

    解决方法:https://blog.csdn.net/xionglangs/article/details/77603343

    4.勾选“BTrace”进行安装

    5.安装完成后,即可进行本地代码的开发、调试。

    如果需要远程调试,需要在服务器端启动tomcat的时候,在jvm参数加上jmx的配置信息({ip},{port}分别替换为具体的ip地址和端口号):

    -Djava.rmi.server.hostname={ip} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port={port} -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -jar

    6.编辑btrace脚本

    6.1 在需要进行调试的程序(pid)上,右键选择“trace application”

    6.2编写脚本

    这个脚本的意思是:在方法返回时候,打印入参和出参,并且打印该方法的名称和方法执行耗费时间。

    6.3运行脚本效果

    btrace官方教程:

    https://github.com/btraceio/btrace/blob/master/docs/usersguide.html

  • 相关阅读:
    Python3---常见函数---super()
    Python3---常见函数---type()
    Python3---面对对象
    Python3---BeautifulSoup---节点选择器
    Python3---Beautiful Soup
    0X01应用程序黑客技术
    Python3---标准库---re
    (trie) UVA
    (trie)UVALive
    (平方分割)POJ 2104 K-th Number
  • 原文地址:https://www.cnblogs.com/danny-djy/p/10020575.html
Copyright © 2011-2022 走看看