乐者为王

Do one thing, and do it well.

在Eclipse下调试Servlet时出现Source not found for

在Eclipse下调试Servlet时出现Source not found for的错误,猜想是没有将Servlet代码加入到调试器搜索的路径中,以致在调试的时候找不到源代码而报错。虽然知道原因,却不知道怎么解决。就在Eclipse里乱逛,东点西击,最后终于找到解决问题所在。

进入Window -> Preferences -> Tomcat -> Source Path,在Source Path标签下有行文字:

1
Add java projects to source path (Eclipse debugger will search for source files in these projects).

将要调试的项目选中然后再调试,果然不再出现警告。

thread dump信息的含义

1
2
3
4
5
6
7
"Thread-0" prio=5 tid=0xafde0 nid=0x72a00 runnable [0x173f000..0x173fb48]
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:421)
    at java.net.ServerSocket.implAccept(ServerSocket.java:243)
    at java.net.ServerSocket.accept(ServerSocket.java:222)
    at com.generationjava.net.PortListener.run(PortListener.java:333)
    at java.lang.Thread.run(Thread.java:496)

Thread-0表示线程名,prio表示这个线程的优先级,tid是这个线程的id号,nid是这个线程对应的本地线程id号。

runnable是线程的状态,其它状态可查看jvmti.h头文件。

[0x173f000..0x173fb48]是线程占用的内存地址范围。

java.net.PlainSocketImpl.socketAccept(Native Method)表示调用了java.net.PlainSocketImpl类中的socketAccept方法,该方法是一个本地方法,且在调用这个本地方法时出了错。

java.net.PlainSocketImpl.accept(PlainSocketImpl.java:421)表示调用了java.net.PlainSocketImpl类中的accept方法,该方法在PlainSocketImpl.java文件中的421行。