我一直在读这里的一些答案而且他们真的帮了我,但我觉得它没有用。情况就是这样:
将Ant和调试标志构建为true。这是我的build.xml的一部分:
<javac srcdir="${src.dir}" destdir="${build.dir}" debug="true">
<classpath refid="classpath"/>
</javac>
然后我这样做:
ant -file build.xml jar
将.jar上传到服务器,通过ssh隧道到达,然后启动:
BASEDIR=/path/to/the/base
CP=$BASEDIR/mainApplication.jar:$BASEDIR/lib/someLib1.jar:$BASEDIR/lib/someLib2.jar
MAINCLASS=package.to.the.main.Class
echo classpath is $CP
echo mainclass is $MAINCLASS
java -Xms512m -Xmx1024m -Xnoagent -agentlib:jdwp=transport=dt_socket,address=<port>,server=y,suspend=n -cp $CP $MAINCLASS $BASEDIR/file.properties
SSH隧道:
L<localPort> machine:<port>
Netbeans中的远程调试。在Netbeans中我做Debug -> Attach Debugger
,这些是我的选择:
Debugger: Java Debugger (JDPA)
Connector: SocketAttach (Attaches by socket to other VMs
Transport: dt_socket
Host: localhost
Port: <localPort>
因此,在此配置之后,我将以调试模式启动Netbeans,但是当我在任何行中设置断点时,netbeans会显示下一条错误消息:
无法提交断点LineBreakpoint OneClass.java:172,原因:类文件package.to.my.Class中缺少行号信息。 LineBreakpoint OneClass.java无效:172
我缺少什么?或者我做错了什么?
提前致谢。
答案 0 :(得分:1)
我不知道自己错过了什么,但配置似乎是正确的,并且知道它工作正常。
debug="true"
应该有效,这是使用行号信息构建应用程序的代码。
问候。