Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JVM运行时诊断工具 HouseMD

JVM运行时诊断工具 HouseMD

Lunfu Zhong

June 04, 2013
Tweet

More Decks by Lunfu Zhong

Other Decks in Programming

Transcript

  1. H ouse
    .M.D

    View Slide

  2. 聚石@taobao.com
    https://github.com/zhongl

    View Slide

  3. 他是一位 诊断 技艺精湛的医生

    View Slide

  4. 话说 诊断 技艺精湛的
    程序员会是...

    View Slide

  5. System.out.println("debugging");

    View Slide

  6. LOG.debug("debugging");

    View Slide

  7. 信息打印总不全有木有?
    又要改代码 > 编译 > 部署, 有木有?
    多来几次想屎的心有木有?

    View Slide

  8. 工欲善其事,必先利其器

    View Slide

  9. BTrace
    神器降临, 一秒钟变高富帅!

    View Slide

  10. Invocation Interception
    Profile
    JStack
    Context
    DTrace
    JMap
    JInfo
    Histogram
    Memory
    File
    Socket

    View Slide

  11. 甜蜜中略带苦涩, 幸福中稍显忧伤

    View Slide

  12. https://gist.github.com/zhongl/5625338
    ClassNotFoundException

    View Slide

  13. https://gist.github.com/zhongl/5625366
    StackOverflowError

    View Slide

  14. 不用IDE写脚本很苦逼, 有木有?
    总是要调整几次脚本才见效, 有木有?
    多来几次尿都憋不住了, 有木有?

    View Slide

  15. HouseMD
    交互式命令行

    View Slide

  16. $ housemd
    INFO : Welcome to HouseMD 0.2.4
    INFO : connection established on 54321
    housemd> _

    View Slide

  17. `trace TraceTarget.addOne`

    View Slide

  18. `trace TraceTarget$C+`
    trace sub class

    View Slide

  19. `trace -d TraceTarget$C+`
    get args and return

    View Slide

  20. `trace -s TraceTarget$C+`
    get invocation StackTrace

    View Slide

  21. Demo

    View Slide

  22. http://github.com/csug/housemd

    View Slide

  23. Tips & Traps

    View Slide

  24. limit < 100
    timeout < 3
    `trace` with `-l -t`

    View Slide

  25. trace unknown sub class instance
    `trace` with `Xxx+`

    View Slide

  26. SimpleName conflict
    `trace` with `-p com.xxx`

    View Slide

  27. INFO: Ended by error
    `last` for error ending

    View Slide

  28. class loaded by who from where
    `loaded` for class info

    View Slide

  29. port conflict
    `housemd -p `

    View Slide

  30. Emacs edit mode, power by jline2
    `Ctrl + r` for history search

    View Slide

  31. Backspace do not work
    Linux mode in SecureCRT

    View Slide

  32. chmod +w /tmp
    No echo cause by privilege

    View Slide

  33. housemd -h
    > help [command]
    test cases
    issues
    More help !!!

    View Slide

  34. https://github.com/CSUG/HouseMD/wiki/DevGuideCN
    Contribute to HouseMD

    View Slide

  35. Intro CSUG

    View Slide

  36. Thanks

    View Slide

  37. Scala In HouseMD
    TODO

    View Slide