У меня есть статическая библиотека, которую я собираю в режиме отладки, но когда я вхожу в нее, я все равно получаю разборку. Я хочу знать, как использовать nm или другой инструмент, чтобы гарантировать, что символы отладки не будут удалены.
Вы могли бы использовать nm
вариант --debug-syms
, позволить nm
также перечислите символы отладчика (если есть) для объекта, упакованного в библиотеку.
Для символов отладчика второй столбец указывает N
,
Пример (предполагается, что объект example.o находится в библиотеке)
nm --debug-syms libexample.a
Выход (выдержка):
example.o:
0000000000000000 b .bss
0000000000000000 n .comment
0000000000000000 d .data
0000000000000000 N .debug_abbrev
0000000000000000 N .debug_aranges
0000000000000000 N .debug_info
0000000000000000 N .debug_line
0000000000000000 N .debug_loc
0000000000000000 N .debug_pubnames
0000000000000000 N .debug_str
0000000000000000 r .eh_frame
0000000000000000 n .note.GNU-stack
0000000000000000 r .rodata
0000000000000000 t .text
...
Подробнее об этом смотрите man nm
,
Вы можете использовать файл Команда, доступная для многих ОС, включая Windows через Cygwin.
Если он говорит «не удален», это означает, что у него есть отладочная информация.
Как примечание, для статических библиотек Арканзас извлечь .o
файлы & использование file
на них напрямую.
Ты можешь использовать strip -S libXX.a
чтобы проверить, был ли уменьшен размер вашей статической библиотеки. Статический размер библиотеки не изменится, если он не включает символы отладки.
Это работает на Mac OS, чтобы проверить статическую библиотеку, сгенерированную XCode.
Скачать Dependencywalker для вашей ОС
Он обнаружит, есть ли в вашей DLL отладочные символы. Если вы видите «Invalid» в «Symbols», это означает, что символы отладки были удалены. Допустимые значения: PDB, CV, DBG и т. Д.