用eclipse的debug调试程序的时候查看final修饰的变量看不到内容吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用eclipse的debug调试程序的时候查看final修饰的变量看不到内容吗?相关的知识,希望对你有一定的参考价值。

只有当程序运行到你指定的行的代码区域时才会显示,如果还没执行,是看不到的,执行过了也是看不到的,还有,有些看不到也是正常的,这与执行效率有关,是还没有真正的执行到。还有一种可能是class文件与java文件代码不统一,也会导致看到的与执行到的不一致。你也看不到。 参考技术A 我试了下,如果是static的就可以看。我估计你是没加static。
一般来说,final的变量都是static的。因为反正也改不了。追问

不是啊 像很多外部内传递参数给内部类的的时候都必须要求是final 但一般不会声明成static 参数传递的时候我怎么就看不到内容啊

追答

我试了一下,如果是final参数的话debug是可以显示的。我的是eclipse 3.4

追问

我看很多源代码的时候就显示不出来 纠结 我用的3.6了

追答

我用的英文版,不知道有没有关系。实在不行就换一下吧,eclipse换版本不麻烦。

追问

嗯 是英文版的 3.2我也用过 唉 不知道咋起的 算了 兄弟 早点睡吧

追答

呵呵,把分给我吧~

本回答被提问者采纳
参考技术B 可以看到

eclipse进行远程调试的时候的出现下图问题时怎么解决

解决方案1:服务是在root 账户下启动的,关掉服务杀掉进程,然后用普通用户登录重启服务!

解决方案2:在Eclipse中找到Run-Debug Configurations-Remote Java Application下找到相应工程在connect的tag下设置port为8000。如果还不能用的话,你把Remote Java Application下的 WebViewHistory全部删除,不新建,直接Debug运行,这样Eclipse会自动为你创建一个默认的WebViewHistory。

解决方案3:有可能是防火墙的问题。

解决方案4:因为以前都是可以的,所以百思不得其解,Google了半天,能找到的问题一般也都是因为对方没有开启远程调试端口,所以自然连不上,但是我这里显然不是这个情况。在困惑了好久以后,突然想到会不会是受到了 Eclipse 代理设置的影响?虽然觉得不太可能,因为我的理解是那个代理只是给 Eclipse 本身用的,并不是给通过 Eclipse 启动的应用程序用的。

解决方案5:这是因为Tomcat还没有启动,或者是没有以Debug模式启动。

解决方案6:同组其他人独占本连接,点击disconnect按钮。

解决方案7:有一点非常重要,先运行应用程序,然后连接它,否则Eclipse会抛出异常”Failed to connect to remote VM. Connection refused”。

解决方案8:找到tomcat/bin/catalina.bat文件,编辑,在CATALINA_OPTS之前加上下行代码set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=50001。【用来调试的端口号】保存,重启Tomcat。

解决方案9:原因最可能就是 Eclipse 中的 ip地址配置错误。

解决方案10: 估计是网络不稳定,最终还是调试成功了。

解决方案11:防火墙的问题。把360里面的网页防火墙关掉就好用了。我每次都重新装。这次终于找到原因了。

远程debug

1.打开Debug Configurations视图

2.右击Remote Java Application,

New

3.选择源码工程

4.输入远程IP和端口,端口即服务

端的$DEBUG_PORT,点击OK。

参考技术A

这个错误是你电脑安装的JDK版本不能支持此版本的Eclipse


建议更新本地JDK版本,同时注意修改本地对应的环境变量

在远程启动程序时,要加上参数,来开启远程Debug模式,然后Eclipse中要创建一个远程Debug的链接

比如: 在启动程序时,如果是tomcat ,只需要在startup.bat最前面加入下面一行

1set JAVA_OPTS=%JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

如果是java程序,应该:

java %JAVA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n

然后在eclipse 中要如下图配置:

参考技术B

1、Linux中配置tomcat在catalina.sh中添加如下

CATALINA_OPTS="-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"(不要换行,要在同一行)

2、Window中修改 catalina,bat文件,添加:
Set  “CATALINA_OPTS=-Xdebug  -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
如图

参数说明:

-Xdebug                              : 启用调试模式

-Xrunjdwp<sub-options>  : 加载JVM的JPDA参考实现库

transport=dt_socket           :Socket连接,可选dt_shmem 通过共享内存的方式连接到调试服务器

address=8000                     :调试服务器监听的端口

server=y                             : 是否是服务器端,n为客户端

suspend=n                         : 启动过程是否加载暂停,y为启动时暂停,方便调试启动过程

3、启动tomcat,看看tomcat是否启动成功,

如果启动成功,tomcat日志文件(catalina.out)中会有如下输入:

Listening for transport dt_socket at address: 8000

4、使用eclipse调试:

点击debug,就可进行调试了


剩下的就和普通调试一样了。断点直接在源代码中添加就行

5、可能出现的连接问题:

Failed to connect to remote VM. Connection refused.

Connection refused: connect。


出现如图所示的情况可能是已经建立了一个连接了。

解决方法:去debug透视途中,

找到点击

断开链接,就可以解决问题了。



但是按照上面的方法进行操作可能会有一些小问题,在远程服务器中更改Tomcat的配置文件catalina.sh之后第一次重启Tomcat时,一般是没有问题的(注意设置的DEBUG端口号不要和其它已有应用端口号冲突),但是在之后的重启过程中可能会出现下面的问题:

cd tomcat/bin
./shutdown.sh ; ./startup.sh ; tailf ../logs/catalina.out

ERROR: transport error 202: bind failed
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510)
JDWP exit error AGENT_ERROR_TRANSPORT_INIT(197): No transports initialized [../../../src/share/back/debugInit.c:690]
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=AGENT_ERROR_TRANSPORT_INIT(197)

之所以出现这个问题,主要是因为,我们添加的DEBUG端口在关闭Tomcat时不能正常关闭,重启时又会重新开启,所以端口被占用,我们可以在关闭Tomcat之后利用下面的命令进行验证会发现,仍然有进程在占用着DEBUG端口。

lsof -i:44121(或者 netstat -na|grep 44121)

这个其实就是我们自己之前开启的。当然我们可以在每次shutdown之后手动kill掉这个进程,但是终归不是解决之道。我现在想到的比较好的方法是在catalina.sh中配置DEBUG端口时,把需要添加的那一行添加到start条件的开始出,并且在stop条件的开始出添加

debug_pid=lsof -i:44121 | tail -n 1 | awk -F" " 'print $2'
kill -9 $debug_pid

以上是关于用eclipse的debug调试程序的时候查看final修饰的变量看不到内容吗?的主要内容,如果未能解决你的问题,请参考以下文章

eclipse调试java程序的九个技巧

eclipsedebug切换数据库

eclipse debug启动不了junitcore

eclipse web程序运行时,debug会跳出,冒出来。怎么关掉

eclipse进行远程调试的时候的出现下图问题时怎么解决

eclipse远程debug