Как узнать, была ли добавлена отладочная информация?
Самый простой способ - это, вероятно, использовать утилиту file
. Пример:
file my_executable
Среди информации, которую он предоставляет, есть, присутствуют ли символы отладки или были удалены.
Существуют и другие инструменты, которые могут сделать это, в том числе GNU readelf ( для исполняемых файлов ELF). Отладочная информация будет отображаться в одном или нескольких собственных разделах двоичного файла ELF, а вы увидите их в списке разделов.
Как найти утечку, используя valgrind, не имея символы отладки вместе с исполняемым файлом?
Таким же образом можно запускать программу вообще без отладочных символов. Valgrind не нуждается в отладочной информации для мониторинга поведения программы. Его основной задачей является предоставление собственных специальных реализаций malloc()
и free()
. Наличие отладочной информации просто позволяет ему генерировать больше интерпретируемых человеком диагностических сообщений c, что, в конце концов, и составляет весь смысл символов отладки.
В ограниченной степени вы можете отлаживать программа с gdb также не содержит отладочных символов, но это болезненно, потому что многое из того, что вы обычно хотите делать с отладчиком, зависит от отображения подробностей исполняемого файла обратно в исходный код. Очень мало такого отображения возможно без символов отладки.