1.远程调试
调试作为开发人员的必备技能,我们几乎每天都会用到。但是大多数时候,我们仅仅是在本地计算机上进行程序的调试而已。有些时候,本地调试是无法满足调试要求的,比如:由于本地计算机环境和服务器环境的软硬件差异,导致本地计算机无法复现问题,因而也无从调试定位问题。此时,我们可能会脑洞大开,是否可以直接调试部署在服务器上的应用程序呢?答案是肯定的,你可以在服务器上面安装相应的开发调试工具,然后直接调试。此外,你也可以直接使用本地开发工具远程调试服务器上部署的应用程序。
下面简单介绍下如何在我们常用的WebSphere(下文以was简称)中间件上,进行远程调试:
1.在was上设置远程调试服务(以下所示均为在was6.1.0.43上的操作):
登录was控制台,服务器->应用程序服务器->选择所要开启调试服务的server->调试服务,勾选”在服务启动时启用服务”,并重启服务器。
was设置
2.在本机IDE(此处演示的为Eclipse,Version: Helios Service Release 2,Build id: 20110218-0911)上进行设置:
eclipse设置
3.在本机IDE(此处演示的为Eclipse,Version: Helios Service Release 2,Build id: 20110218-0911)上右键‘Debug As’选择刚才2中新建的调试设置,坐等服务器上断点被触发,即可进入远程调试,如本地调试般顺滑。
更多信息可参考:使用Eclipse远程调试Java应用程序
2.前端 hack
服务器上经常容易出现各种本机环境所无法呈现的问题。真是生命不息,填坑不止,愁煞猿也!很多时候,通过各种方法技巧定位到了问题所在,也找到了解决方案本机验证通过,但是更重要的是需要在服务器上面进行验证。作为运行中的服务器,一般是不允许被随意中断的,也不能轻易进行更新升级的。那么要如何不改变服务器而又可以进行服务器端的验证呢?可以利用浏览器的调试功能(此方案仅在某些需要修改前台js、jsp等代码的情况下有效)。
比如:以下代码情况下,若附件名含有中文则将导致保存的时候出现乱码。
文件名未进行编码
解决方案就是对fileNameDes进行两次的encodeURIComponent编码。但是此时在服务器不允许临时升级的情况下,怎么验证问题是否得到解决呢?对,这位童鞋说对了,可以利用浏览器的F12调试功能里面的监视,直接改变变量值(把methodPath变量设置为经过了两次encodeURIComponent编码后的值)来查看验证最终的效果。在监视处添加如下代码(产生的效果即和上传部署***代码效果一致):
- methodPath = mainPath + "method=getDown&id="+id+"&fileNameDes="+encodeURIComponent(encodeURIComponent(fileNameDes))+"&fileName="
调试修改变量值