在 java 进程有一些莫名其妙的问题,可以通过 jdb 来处理问题。
在上周在通过 HttpClient 访问时,有发现代码里的 NPE,从源码日志看逻辑是没有问题,运行的进程的 jar 包又不好替换,就使用 jdb 命令发现 getContentLength 方法返回值为 -1(后来发现另一个可以使用的接口里没有判断这个值,并且这个值也为 -1,我猜想是从 stream中获取导致不需要这个值),会导致 NPE。在这种情况下使用 jdb 命令非常方便的看到是怎么回事。
具体使用方法有两个博客可以参考,这里记录一下: