java - Java 运行时库 (rt.jar) 中的断点

标签 java eclipse debugging jvm breakpoints

可以不在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/

相关文章:

java - 一般问题 : Java has the heap and local stack. 你能访问堆中的任何对象吗?

java - 就像从命令行一样在 Eclipse 中运行 Java 程序

java - Matlab 控件和 Java Servlet

c++ - 为什么C++类函数没有low_pc/high_pc DWARF信息

java - 如何用java读取我电脑中的所有mp3文件?

java - freemarker 模板中的日期格式问题

debugging - 可以事后构建调试符号吗?

javascript - 带有源映射的调试器中的损坏名称

java - 如何查找是否有任何 jar 正在使用已弃用的类

eclipse - 将 ARM DS-5 与 Eclipse 结合使用