Просто, чтобы дать некоторый контекст, я говорю о компиляции кода C++ с g ++ здесь.g ++ - использует флаг «-g» для сборки, создает хорошую идею?
Я вижу, как включение флага -g для производственных сборок будет удобной для обслуживания: программа будет намного легче отлаживать, если она неожиданно завершится.
Мой вопрос здесь в том, включает ли флаг -g на выходной исполняемый файл каким-либо другим способом, кроме увеличения его размера? Может ли он каким-то образом сделать код более медленным (например, отключив определенные оптимизации)?
Из чего я понимаю, это не должно (в документации упоминается только включение символов отладки), но я не уверен.
Поскольку я прочитал эти документы, только компиляторы, отличные от gcc, имеют оптимизацию, подверженную -g. Мой опыт в том, что для gcc это идет в другом направлении: на то, что вы можете видеть и делать в отладчике, влияет оптимизация - иногда строго. Конечно, это то, чего вы ожидаете от агрессивной оптимизации: вы не можете отлаживать то, чего там нет. – Gene
@Gene: О, я вижу ... интересно, спасибо, что указали это. Похоже, я был тем, кто ошибся в GCC! – Mehrdad