Использование опций -g и -O2 в gcc
Кто-нибудь испытывает смешение -g (отладочные символы) и -O2 (лучшая безопасная оптимизация) с gcc-компилятором?
Мне нужно отлаживать сбои в программе выпуска, распространяемые конечным пользователям, которые могли бы отправить мне основной файл.
Я всегда звонил:
gdb < myprogram → < основной файл →
и посмотрите, где проблема. Теперь я могу просто увидеть трассировку вызова, но без отладочных символов у меня проблемы.
Любая идея?
Ответы
Ответ 1
Мы используем оба вместе в производственной среде, что делает отладку намного проще, если клиент только однажды увидел сбой. Это дает вам довольно хорошую идею, где проблема (не если это было повреждение памяти).
Теоретически добавление -g не должно влиять на производительность, хотя исполняемый файл становится большим. Во встроенной среде это большой компромисс.
Ответ 2
Он отлично работает.
Или хорошо, из-за оптимизации иногда источник, который вы перешагиваете с помощью отладчика, точно не совпадает с исходным кодом, но IMHO, несмотря на то, что символы отладки значительно облегчают отладку.