四时宝库

程序员的知识宝库

还在靠猜进行分布式程序的debug?试试idea这个功能


点点关注不迷路,干货知识不错过[灵光一闪]


做过分布式程序开发的朋友都有感触,分布式程序不像单机程序可以运行在本地,很方便地通过打断点来进行debug排错。所以很多进行分布式开发的朋友,在遇到bug时很是头疼。

bug出现了,逃是逃不掉了,毕竟程序就阻塞在了那里,你老板可是在盯着你。所以,很多程序猿们就开始了打印日志排错法,通过逻辑分析,定位到可能出问题的区域,然后在代码块前、后各打印一些输出日志,来判断是否代码有问题,我们先不说定位不定位得到,光说你每次:改代码→打包→上传到服务器→运行→没找到错误→改代码...的循环就已经够累了。

基于以上,今天就来介绍一个专门用来给分布式程序debug的方法,学会了之后,你会感觉好用到后悔为什么现在才知道。

首先,我们需要使用idea打开我们的分布式代码,一定要注意,要确保本地的代码和集群上已经部署的代码,是完全相同的一份代码。

然后按照下图标记的,展开Run Configurations,点击Edit Configuratinos进行编辑:

找到Remote配置,然后点击,进入配置:

给这个配置配置文件起一个名字,然后,输入你要连接到远程代码所在节点的Host,随便定义一个在远端服务器没有被占用的端口号。

Host和Port定义好了之后,我们就要把根据我们刚才配置生成的待会会用到的远程调试脚本参数复制下来,复制下来后,我们就可以点击右下角的OK完成配置了。

我们需要来到服务器所在环境,找到我们的程序启动脚本,看看jar包启动命令实在哪里执行的,然后在java和-cp或-classpath之间,加上我们刚才复制的调试参数,添加完之后,保存配置,然后启动脚本,运行服务器上的分布式程序。

回到本地,在idea找到需要调试的地方打上断点,然后使用我们刚才配置的远程调试配置文件,点击debug按钮,就会通过我们刚才配置的Host和Port连接到远程的分布式程序了。

接下来,我们只需要在服务器上提交一个程序或者开始一个计算,我们就能在本地看到,运行到断点处,程序就停下来了,然后我们就可以像调试单机程序那样,进行逐步跟进,根据堆栈对象信息来debug了。

你有没有更好的debug方法,不妨在评论区分享一下~


收藏加点赞,随时都能看?[赞]


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接