Отладка файлов ядра C++ для выпущенного программного обеспечения
Я пытаюсь найти способ отладки основных файлов, отправленных мне из выпущенных версий моего программного обеспечения (код C++, скомпилированный с gcc). В идеале я хотел бы иметь возможность развертывать релизные сборки и держать отладочные сборки под рукой, чтобы использовать их для отладки, поэтому у меня есть таблицы символов и т. Д.
Моя проблема в том, что (насколько я понимаю) сборки отладки и выпуска не гарантируются одинаковыми - поэтому основной файл из поля может выглядеть как мусор, когда я запускаю gdb и указываю на мой исполняемый файл отладки.
Есть ли способ обойти это (и здесь подвох), не влияя на размер или производительность моего выпущенного программного обеспечения? Это большое приложение, и производительность отладочной сборки, вероятно, не приемлема для клиентов. Я рассмотрел предложения по сборке один раз (отладка), затем убрал таблицы символов и отправил их в качестве сборки выпуска, но я собираюсь увидеть снижение производительности при таком подходе, не так ли?
Есть ли у кого-нибудь предложения о том, что они пробовали или используют в настоящее время для решения этой проблемы? Спасибо!
1 ответ
Вы можете скомпилировать и связать с включенной оптимизацией и по-прежнему генерировать символы отладки (-O3 -g
), а затем извлечь символы отладки. Таким образом, у вас будут символы отладки, но вы сможете их поставлять без них, и у вас не будет потери производительности или чего-то еще. См. Как создать символ отладки gcc вне цели сборки? о том, как это сделать.