Это помогает, добавляя номера строк, имена файлов, определения макросов и тому подобное в результирующий двоичный файл.Тем не менее, он не включает полный исходный код программы внутри самой программы.
Вот пример определения макросов, включенных в результирующий файл:
username@localhost /path/to/source/code $ gcc test.c -Wall -Wextra -gdwarf-4 -g3
username@localhost /path/to/source/code $ grep __STDC_VERSION__ a.out
Binary file a.out matches
Отладочная информация более полезнадля декомпиляции при компиляции с -g3
, как показано в приведенном выше примере.
Итак, ответ на ваш вопрос: он дает немного дополнительной информации, которая может быть полезна при декомпиляции, но не достаточно длябыть в состоянии декомпилировать и перекомпилировать программу успешно.Если возможно, просто передайте исходный код человеку.
Если вы хотите предотвратить декомпиляцию своего кода, просто запустите на нем strip
, как показано ниже, после сборки и отладки вашей программы:
strip program-file
-g
не должен влиять на генерацию кода, он просто добавляет информацию, полезную только отладчику, в результирующий программный файл.
Если вы хотите запретить кому-либо разбирать или декомпилировать ваше программное обеспечение, просто включите его в свойлицензия.