今天刚开始学习GWT,照着其官方网站上的教程写例子做实验。当进行到Debugging一节的时候,发现设置的断点总是不能起作用。
在google上搜索,发现有人说使用SDM(Super Dev Mode)时,需要用SDBG插件才能进行调试。但是GWT官方文档没有说呢!在google继续搜时,看到GWT官网上的一篇介绍Super Dev Mode的文章,里面说:“Super Dev Mode就跟生产模式类似,把整个GWT应用都编译成了JavaScript。这就意味着不能象经典Dev Mode那样使用普通的Java调试器,而是需要使用浏览器的调试器。”原文如下:
Super Dev Mode compiles entire GWT applications to JavaScript, similar to production mode. This means we can’t use a normal Java debugger like in classic Dev Mode. Instead, we will use the browser’s debugger. (I recommend using Chrome for now.)
也就是说,我们需要在浏览器中来调试Java代码。调试过程简要说明如下。
- 环境。我用的是GWT2.8,Chrome 55。
-
在Eclipse中以SDM模式启动GWT应用,如下:
从Eclipse的主控台中可看到Code Server已经启动:
- 在chrome中访问GWT应用,http://127.0.0.1:8888/StockWatcher.html
-
在chrome中打开开发工具,在其设置中查看source map是否已经打开,如下:
-
从sources中可以看到Java代码文件:
-
可以设置断点、单步执行等,还可以查看变量的值:
那篇介绍Super Dev Mode的文章还介绍了Without Dev Mode的情况,比如GWT应用是单独运行的一个服务,应该如何调试。简单说就是:
- 重新编译GWT应用,并把它运行起来;
- 运行SDM的code server,如何运行看其帮助;
- 浏览器中访问code server输出的url(一般是http://localhost:9876/ ),按其页面提示操作即可。