当然有很正规的方法。这里我讲一个我想到的相对简单的方法。
调试程序的一个很简单有效的方法是打印观察变量。如何让运行在远程主机(linux主机)上的Java程序打印变量,其实很简单,就是开一个用于调试的terminal,让程序打印到这个terminal中。Linux的远程终端都在/dev/pts下,所谓pts就是伪终端的意思,就是远程终端,区别于tty。第一个log in的远程终端是/dev/pts/0,第二个/dev/pts/1,依次类推。Java程序把调试信息写到这个终端文件里,就显示到我们的调试终端窗口上了。
为什么要专用打开一个终端窗口用于调试?原因是我们可以利用标准终端的“ESC[”控制命令,在窗口的特定位置显示信息,这样不会发生滚屏,方便观察调试变量。
“ESC]”控制命令的例子:
ESC[2J (即"\x1b[2J") 清屏
ESC[y;xH 将光标移动到(x,y)
有很多条ESC[命令,可以完成各类屏幕控制功能。可以用“ANSI escape code”关键词到百度或者wikipedia上找到这些命令的详情。
以前用过这种方法调试php后端,相当有效。