Опция GCC, которая может вызвать проблемы при отладке с помощью GDB - PullRequest
7 голосов
/ 11 февраля 2010

Мне было интересно, смогу ли я получить список опций gcc, которые могут привести к странному поведению gdb.

Конечно, мы все знаем, что использование параметров оптимизации (например, -O3) вызывает странное поведение в gdb, но каковы другие параметры, которые могут оказать такое влияние?

(в настоящее время я пытаюсь запустить декодер mpeg2 в gdb, и я получаю странное поведение даже после удаления флагов оптимизации ...)

Ответы [ 2 ]

9 голосов
/ 11 февраля 2010

Я думаю, трудно сказать, какие флаги вы не должны использовать при вызове gcc для отладки. В gcc docs отмечается, что флагами отладки по умолчанию являются -g и -O2, а использование -g -O0 -fno-inline отключает любую оптимизацию и встраивание функций.

По моему мнению, если вы действительно хотите гарантировать, что ничто не помешает вашему процессу отладки, вам просто нужно скомпилировать с -g -O0 -fno-inline flags.

0 голосов
/ 01 декабря 2015

Как указано в документации GCC , вы должны использовать -Og:

-OG

Оптимизация опыта отладки. -Og включает оптимизации, которые не мешают отладке. Этот уровень оптимизации должен быть выбран для стандартного цикла редактирования-компиляции-отладки, предлагая разумный уровень оптимизации при одновременной поддержке быстрой компиляции и хорошем отладочном опыте.

Также описывается каждый флаг оптимизации и как это может повлиять на отладку.

...