linux下jdb远程调试tomcat源码

jdb远程调试tomcat

  • 在tomcat打开调试设置jvm参数

    -Xrunjdwp:transport=dt_socket,server=y,address=9090,suspend=y
    
  • 在linux命令行jdb连接9090端口

    jdb -attach ip:9090 -sourcepath /softwares/apache-tomcat-7.0.40-src/java
    
  • 设置断点

    stop at org.apache.tomcat.util.IntrospectionUtils:402
    stop at org.apache.tomcat.util.IntrospectionUtils:406
    stop at org.apache.tomcat.util.IntrospectionUtils:408
    stop at org.apache.tomcat.util.IntrospectionUtils:412 
    
  • 执行程序

    main[1] run
    > Set deferred breakpoint org.apache.tomcat.util.IntrospectionUtils:412
    Set deferred breakpoint org.apache.tomcat.util.IntrospectionUtils:412
    Set deferred breakpoint org.apache.tomcat.util.IntrospectionUtils:408
    Unable to set deferred breakpoint org.apache.tomcat.util.IntrospectionUtils:406 
    
    
    : No code at line 406 in org.apache.tomcat.util.IntrospectionUtils
    
    
    Stopping due to deferred breakpoint errors.
    Set deferred breakpoint org.apache.tomcat.util.IntrospectionUtils:402
    
    
    Breakpoint hit: 
    Breakpoint hit: "thread=main", 
    
    
    org.apache.tomcat.util.IntrospectionUtils.setProperty(), line=412 bci=849
    412                ExceptionUtils.handleThrowable(ie.getCause());
    
  • 打印变量

    main[1] locals
    Method arguments:
    o = instance of x.x.x.JNDIRealm(id=1156) 
    name = "connectionPassword"
    value = "1234"
    invokeSetProperty = true
    Local variables:
    setter = "setConnectionPassword"
    ie = instance of java.lang.reflect.InvocationTargetException(id=1160)
    main[1] dump ie.target 
     ie.target = {
        serialVersionUID: -7034897190745766939
        java.lang.Exception.serialVersionUID: -3387516993124229948
        java.lang.Throwable.serialVersionUID: -3042686055658047285
        java.lang.Throwable.detailMessage: "password decrypt is error!"
        java.lang.Throwable.cause: instance of java.lang.RuntimeException(id=1163)
        java.lang.Throwable.stackTrace: null
    }
    
  • 打印变量dump信息

    main[1] dump ie.target.cause
    ie.target.cause = {
        serialVersionUID: -7034897190745766939
        java.lang.Exception.serialVersionUID: -3387516993124229948
        java.lang.Throwable.serialVersionUID: -3042686055658047285
        java.lang.Throwable.detailMessage: "get content from cyberark error"
        java.lang.Throwable.cause: instance of 
    
    
    javapasswordsdk.exceptions.PSDKException(id=1165)
        java.lang.Throwable.stackTrace: null
    }
    
  • ctrl+c 退出

    main[1]

相关推荐

  1. linuxjdb远程调试tomcat

    2024-01-27 15:56:02       60 阅读
  2. 远程过程调用-buttonrpc解析6-函数调用

    2024-01-27 15:56:02       37 阅读
  3. 快速搭建 linux 调试环境

    2024-01-27 15:56:02       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-27 15:56:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-27 15:56:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-27 15:56:02       87 阅读
  4. Python语言-面向对象

    2024-01-27 15:56:02       96 阅读

热门阅读

  1. 每日OJ题_算法_二分查找⑥_力扣162. 寻找峰值

    2024-01-27 15:56:02       57 阅读
  2. Python面试题

    2024-01-27 15:56:02       62 阅读
  3. Conan2: starting at a text book example

    2024-01-27 15:56:02       37 阅读
  4. 万年历(方法版)

    2024-01-27 15:56:02       56 阅读