2015-08-19 2 views
0

Наша система зданий генерирует очень большие исполняемые файлы. Многие размеры исполняемого файла - это отладочная информация. поэтому полоса может значительно уменьшить размер исполняемого файла. но если вся отладочная информация удалена, отладка будет сложной.Могу ли я удалить информацию об отладке только для локальных символов только с ELF?

Итак, я хочу знать, есть ли способ удалить локальную информацию об отладке? таких как локальные переменные, функциональные параметры. Мне нужно сохранить связь между именем функции и файловой строкой, чтобы включить функцию backdrace gdb и команду up/down.

Большое спасибо.

ответ

-1

Попробуйте стрип --strip-отлаживать

Также попробуйте

-g 
    -S 
    -d 
2

мне нужно сохранить отношения между именем функции и строки файла, чтобы включить GDB трассировку и вверх/вниз командную работу.

Вы ошибаетесь: backtrace и up/down работают отлично без информации отладки на всех. Если backtraceвсе вам нужно, то просто создайте без каких-либо флагов отладки, и со мной все будет в порядке.

Если вы действительно нуждаетесь в информации файла и если вы компилируете с недавним gcc (или g++) и использовать DWARF, то вы можете:

 -gsplit-dwarf 
     Separate as much dwarf debugging information as possible into a 
     separate output file with the extension .dwo. This option 
     allows the build system to avoid linking files with debug 
     information. To be useful, this option requires a debugger 
     capable of reading .dwo files. 

Примечание: это по-прежнему оставляет файл/line в главном двоичном файле, но оставляет все остальное в файлах .dwo.