在调试Redis时,我使用make noopt
编译了代码,在Makefile中,优化设置为O0
。在调试时,我仍然有一些优化的东西:
在第1行中,我们可以看到aeDeleteFileEvent
的所有参数,但当我进入aeApiDelEvent
(第-2行)时,其所有参数都是<optimized out>
。
为什么这些发生了?
另一个问题,在第3行,我列出了所有断点。实际上,第3个断点是我在调试文件( x.gdb )中设置的aeApiDelEvent
,但为什么它更改为aeDeleteFileEvent
?
答案 0 :(得分:0)
好的,谢谢@alk(事实是GCC优化它)和@markys(V=1
适合我)。
我发现Redis的Makefile中有一个棘手的问题(可能是Bug,因为它使make noopt
对调试没有影响),有一个规则将包含.make-settings
,并且在文件中,一个选项的设置是O2
优化。
在Makefile中注释该行后,现在GDB中没有出现任何优化。