标签: c++ debugging compiler-construction jvm compiler-optimization
我注意到,当我使用GCC -Og编译代码时,gdb通常无法断点断点告知变量值,因为它们已“优化”。我知道信息以某种形式存在,因为程序结果取决于它的值。
-Og
另一方面,我从未见过OpenJDK会发生这种情况,它能够很好地编译代码以实现性能和调试目的。
为什么存在这种差异?
我认为两个编译器都允许在代码中的任意位置设置断点,即使对代码进行了优化,内联等也是如此。我怀疑以下可能性: