HBase源码分析之远程调试
2017-09-17 15:05
1106 查看
远程调试是JDWP提供的,通过Agent Library的形式加载到JVM中,所以与编译无关,只要运行Java程序时加入调试参数即可。
我们通过IDE来创建调试配置,以Intellij IDEA为例,选择Edit Configurations,添加Remote,就可以看到IDE提供的调试参数,把它加到Java的运行参数里就可以了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202011/10/775fb4a1ba5adf339ba34a10915b563a)
在运行脚本start-hbase.sh时,实际执行在bin/hbase文件中。修改bin/hbase文件,把调试参数加进去,只要在最终执行java之前加入就行,为了方便查找,我加在了最后一段之前。调试时如果配置了两个进程都开启调试,会导致抢占同一个端口,可以一次只调试一个进程或者修改端口号来避免冲突。
这时运行start-hbase.sh,IDE中运行Debug,就可以断点到了。
调试HBase时,还需要将zookeeper.session.timeout、hbase.zookeeper.property.tickTime、hbase.rpc.timeout、hbase.client.operation.timeout、hbase.client.scanner.timeout.period等参数时间设的长一些,以免因为调试时间过长导致连接超时断开、Server关闭等问题。
我们通过IDE来创建调试配置,以Intellij IDEA为例,选择Edit Configurations,添加Remote,就可以看到IDE提供的调试参数,把它加到Java的运行参数里就可以了。
在运行脚本start-hbase.sh时,实际执行在bin/hbase文件中。修改bin/hbase文件,把调试参数加进去,只要在最终执行java之前加入就行,为了方便查找,我加在了最后一段之前。调试时如果配置了两个进程都开启调试,会导致抢占同一个端口,可以一次只调试一个进程或者修改端口号来避免冲突。
... #################################################################### # masa's remote debugger #################################################################### REMOTE_DEBUGGER="-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=localhost:5005" # 调试Master # if [ "$COMMAND" = "master" ] ; then # if [ "$1" != "stop" ] && [ "$1" != "clear" ] ; then # HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER" # fi # fi # 调试RegionServer if [ "$COMMAND" = "regionserver" ] ; then if [ "$1" != "stop" ] ; then HBASE_OPTS="$HBASE_OPTS $REMOTE_DEBUGGER" fi fi ################################# END ############################## HEAP_SETTINGS="$JAVA_HEAP_MAX $JAVA_OFFHEAP_MAX" # Exec unless HBASE_NOEXEC is set. export CLASSPATH if [ "${HBASE_NOEXEC}" != "" ]; then "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "$@" else exec "$JAVA" -Dproc_$COMMAND -XX:OnOutOfMemoryError="kill -9 %p" $HEAP_SETTINGS $HBASE_OPTS $CLASS "$@" fi
这时运行start-hbase.sh,IDE中运行Debug,就可以断点到了。
调试HBase时,还需要将zookeeper.session.timeout、hbase.zookeeper.property.tickTime、hbase.rpc.timeout、hbase.client.operation.timeout、hbase.client.scanner.timeout.period等参数时间设的长一些,以免因为调试时间过长导致连接超时断开、Server关闭等问题。
相关文章推荐
- Flume源码分析—利用Eclipse对Flume源码进行远程调试分析环境搭建(一)
- hadoop 2.7.3 源码分析(三):hadoop远程调试
- Flume源码分析—利用Eclipse对Flume源码进行远程调试分析环境搭建(一)
- Hbase 源码分析6 -- Regionserver上的 Get 全流程
- HBase源码分析之compact请求发起时机、判断条件等详情(二)
- HBase 0.94 master启动过程源码分析
- HBase 1.1.3 balance相关源码分析 一
- Android 4.0 Launcher2源码分析——导入eclipse进行调试
- Android服务函数远程调用源码分析
- HBase 0.1.0 Flush流程源码分析
- Hbase-0.98.6源码分析--Nonce管理机制源码分析
- HBase源码分析_Master启动过程
- hbase 权限控制源码分析
- 数据库中间件 MyCAT 源码分析 —— 调试环境搭建
- linux下jdb远程调试tomcat源码
- HBase源码分析之WALEdit
- SkyWalking 源码分析 —— 调试环境搭建
- HBase源码分析之regionserver读取流程分析
- Hbase-0.98.6源码分析--RegionServer宕机处理
- HBase源码分析