Skip to content
This repository has been archived by the owner on Mar 14, 2019. It is now read-only.
zhongl edited this page Jun 14, 2012 · 21 revisions

HouseMD 是一款非常敏捷的Java进程运行时的诊断调式命令行工具, 它具备安全易用高效的特点, 让它非常适合在要求严格的线上(生产)环境中使用.

特性

  • 交互式命令行
  • 支持Tab自动补全或候选列表提示
  • 支持命令历史
  • 查看加载类
  • 支持跟踪文件来源路径
  • 支持跟踪类加载器层次
  • 跟踪方法
  • 支持类短名字(SimpleName)和方法名(可选)限定跟踪目标
  • 支持根据抽象类或借口来限定其实现类的跟踪目标
  • 支持实时显示跟踪目标的摘要统计
  • 支持输出跟踪目标调用日志文件输出
  • 支持输出跟踪目标调用栈文件输出
  • 查看环境变量和属性(Comming soon)

为什么要有HouseMD

点击这里查看

BTrace 相比

  • 仅一个jar包, 部署简单, 使用简单
  • 无需编写脚本, 借助指令完成常见诊断操作, 且切换快速高效
  • 借助命令行提示, 能够快速准确定位要跟踪的目标
  • 支持查看加载类的信息, 这在容器的应用诊断场景非常有用
  • 通过跟踪限时和限次数的机制, 来控制给跟踪过程带来的消耗
  • 自动检测并解决容器应用中类加载的问题
  • 自身源码精简短小, 易于阅读掌握, 易于定制扩展

安装

快速安装

LinuxUnix的系统下, 在要安装HouseMD的路径下, 运行:

> curl -Lk https://raw.github.com/zhongl/HouseMD/master/bin/install | bash

若在Windows下, 请尝试下载安装

下载安装

> java -Xbootclasspath/a:$JAVA_HOME/lib/tools.jar -jar housemd-assembly-x.x.x.jar

注意: 在 Mac OSX下, 选项-Xbootclasspath是不需要的.

入门

假定你在 快速安装 好之后, 在命令行输入:

> housemd -h

你会看到HouseMD的帮助信息, 如下:

Usage: housemd [OPTIONS] pid
	a runtime diagnosis tool of JVM.
Options:
	-h, --help
		show help infomation of this command.
	-p, --port=[INT]
		set console local socket server port number.
		default: 54321
Parameters:
	pid
		id of process to be diagnosing.

真正要用起来, 则需要拿到你要诊断的java进程的ID(通过jpsps), 假设pid1234, 然后执行:

最快速的入门方法, 莫过于带着好奇心去探索, 从常见问题解答

指令参考

show

TODO

loaded

trace

历史版本

点击这里查看

参与贡献

构建

测试

结构

对于Scala程序员

对于Java程序员

参考资料

  1. BTrace
  2. javaagent
  3. 动态跟踪Java
Clone this wiki locally