java - 程序编译时如何打印堆栈跟踪?

标签 java compiler-construction stack-trace bytecode

这是一个非常简单的问题:

当您编译java程序时,它会转换为字节代码,因此,.java或.class文件的每个行号都会丢失(我认为是这样,可能我错了..)。那么,当您打印堆栈跟踪时,它如何设法获取调用堆栈中的所有类名和行号?我想我可能在这里遗漏了一些东西,但我找不到与此相关的任何内容。

最佳答案

When you compile a java program, it is converted to byte code

正确。

so therefore, every line number of the .java or .class file is missed (I think so, probably I am wrong..).

你错了。除非您以某种方式使用 -g 编译器选项,否则行号信息会嵌入到 .class 文件中。

关于java - 程序编译时如何打印堆栈跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062160/

相关文章:

java - 如何理解happens-before一致

c++ - shared_ptr : horrible speed

compiler-construction - 创建快速解释语言

c++ - 为什么 MSVC 不为 char 或 const char* 优化 cout 而为 int 优化?

objective-c - 什么在调用 CFStringCreateFromExternalRepresentation?

c# - 有什么方法可以避免 C# 中的属性内联优化?

从堆栈跟踪中隐藏装饰器的 Python 2 和 3 兼容方法

java - 根据大小写交替生成字母的句子

java - slick.util 和 lwjgl 纹理的问题

java - 如何检查间隔列表(Joda-Time)是否完全涵盖 Java 中的一个月