2012-02-09 25 views
1

我们不能在rt.jar的类中放置断点吗?java运行时库中的断点(rt.jar)

我调试的东西,我需要把java.lang.DriverManager中的断点,但只要我把一个断点,在一些地方,Eclipse提示我的消息

Unable to install breakpoint in java.sql.DriverManager due to missing line number attributes. Modify compiler options to generate line number attributes 

这是否意味着java运行时类没有被编译进行调试?如果是,那么为什么会这样做呢。请帮忙!

编辑1:我在做远程调试,实际的web应用程序运行在Linux机器上的tomcat上,我在一台Windows机器上运行。哪个rt.jar是这里的罪魁祸首,我的机器上还是远程机器上的? rt.jar有可能不是用行号和其他有用的信息编译的吗?

编辑2:此问题的答案有详细信息Locally declared variables can not be inspected 任何人都知道为什么编译时没有调试符号?它如何影响性能,以保持一些元数据或是其他东西?

+0

的NetBeans 7.1,JDK 30年6月1日,win7的,没有问题的设置断点的DriverManager类 – Dapeng 2012-02-09 09:49:05

+1

在过去RT带调试符号的.jar可从java.net下载。但现在我找不到它的任何跟踪。 – Mersenne 2012-02-09 10:50:56

回答

3

如果某个类未使用调试开关(-g)进行编译,则无法在特定行上设置断点。

但是,即使没有为调试编译类,仍然可以在方法上设置断点(在eclipse中:在定义方法的第一行设置断点)。

这很可能是您无法访问本地变量,并且您没有看到在哪一行中单步执行代码。这会使调试变得更加困难,但您仍然可以看到发生了什么(例如,检查方法参数值),特别是如果您知道底层的源代码。

但我想知道你的rt.jar没有编译调试信息。

0

这是一个日食设置。正如错误信息太清楚第二 中的选项Classfiel代

去检查偏好 2nd Option checked in Classfiel Generation

+0

是的,但我的问题是...不是用这些设置编译的rt.jar? – Ashish 2012-02-09 10:43:58

+1

哦,我错过了你的最后一行...并加上我的JDK 1.6.0我总是能够在rt.jar中进行调试。对不起,不太重视。它归结为只编译特定的类。 – 2012-02-09 11:02:48

+0

是否可以在DriverManager内进行调试?是因为远程调试,我有这个问题吗? – Ashish 2012-02-09 14:58:45