修改代码 线上 debug 操作
正常的线上 Java 诊断使用 Btrace, 阿里开源的 Arthas 等工具. 不过偶尔还是要使用最古老的方式, 比如不能 copy 太大的工具去线上. 这里记录一下这种古老的方式.
一般拿某个类的线上版本的源代码修改一下, 如果需要要打出出错的 stacktrace:Thread.dumpStack();
每一步都要检查, 否则可能造成线上出错:
- 本地 JDK 版本是不是与线上一致?
- 本地编译器设置版本是不是与线上一致?
- 是不是重新编译后的代码?
- 线上该文件所有者是不是与其它文件一致?
- 线上该文件的权限是不是与其它文件一致?
- 是不是已经把正常流量迁走?
- 是不是能用某些 URL 先验证一下;
- 时刻关注各种 metrics 数据;
- 查看 log, 必要时替换回去.