Подтвердить что ты не робот

Использование опций -g и -O2 в gcc

Кто-нибудь испытывает смешение -g (отладочные символы) и -O2 (лучшая безопасная оптимизация) с gcc-компилятором?
Мне нужно отлаживать сбои в программе выпуска, распространяемые конечным пользователям, которые могли бы отправить мне основной файл.
Я всегда звонил:

gdb < myprogram → < основной файл →

и посмотрите, где проблема. Теперь я могу просто увидеть трассировку вызова, но без отладочных символов у меня проблемы.

Любая идея?

4b9b3361

Ответ 1

Мы используем оба вместе в производственной среде, что делает отладку намного проще, если клиент только однажды увидел сбой. Это дает вам довольно хорошую идею, где проблема (не если это было повреждение памяти).

Теоретически добавление -g не должно влиять на производительность, хотя исполняемый файл становится большим. Во встроенной среде это большой компромисс.

Ответ 2

Он отлично работает.

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