可以不在rt.jar中的类中打断点吗?
我正在调试一些东西,我需要在 java.sql.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 运行时类不是为调试而编译的?如果是,那为什么要做这样的事情。请帮忙!
Edit1:我正在做远程调试,实际的 web 应用程序在 linux 机器上的 tomcat 中运行,我在 windows 机器上。哪个 rt.jar 是这里的罪魁祸首,是我机器上的还是远程机器上的? rt.jar 是否可能没有使用行号和其他有用信息进行编译?
Edit2:这个问题的答案有详细信息 Locally declared variables can not be inspected 任何人都知道为什么这是在没有调试符号的情况下编译的?保留一些元数据或其他东西对性能有何影响?
最佳答案
如果类未使用调试开关 (-g) 编译,则无法在特定行上设置断点。
但是,您仍然可以在方法上设置断点(在 eclipse 中:在定义方法的第一行设置断点),即使这些类不是为了调试而编译的。
您很可能无法访问局部变量,也看不到在哪一行单步执行代码。这使调试变得有点困难,但您仍然能够看到正在发生的事情(例如检查方法参数值),尤其是在您了解底层源代码的情况下。
但是我想知道你的rt.jar没有编译调试信息。
关于java - Java 运行时库 (rt.jar) 中的断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9208468/