使用 GDB 调试时可能会导致问题的 GCC 选项

问题描述 投票:0回答:2

我想知道是否可以获得可能导致 gdb 行为奇怪的 gcc 选项列表。

当然,我们都知道使用优化选项(例如 -O3)会导致 gdb 中出现奇怪的行为,但是还有哪些其他选项可以产生这种影响?

(我目前正在尝试在 gdb 中运行 mpeg2 解码器,即使在删除优化标志后我也会出现奇怪的行为......)

gcc gdb flags
2个回答
9
投票

我认为很难说在调用 gcc 进行调试时不应该使用哪些标志。 gcc 文档指出,libstdc++ 构建的默认调试标志是

-g
-O2
,使用
-g -O0 -fno-inline
会禁用任何优化和函数内联。

在我看来,如果你真的想保证没有什么会扰乱你的调试过程,你只需要使用

-g -O0 -fno-inline
标志进行编译。


0
投票

GCC文档中所述,您应该使用-Og:

-奥格

优化调试体验。 -Og 启用不干扰调试的优化。它应该是标准编辑-编译-调试周期的优化级别选择,提供合理的优化级别,同时保持快速编译和良好的调试体验。

它还描述了每个优化标志以及它如何影响调试。

© www.soinside.com 2019 - 2024. All rights reserved.