Я написал преобразование LLVM, которое в основном заменяет malloc на охраняемые malloc и некоторые другие вещи.
Я использую clang (или llvm-gcc) для компиляции файла c, чтобы получить файл битового кода (используя опцию -emit-llvm), который содержит отладочную информацию. Они также содержат имена методов, номера строк и т. Д.
После этого я использую opt для обработки этого файла битового кода. Результатом является инструментированный файл битового кода, в котором все еще содержится вся необходимая информация об отладке.
На третьем и последнем шаге, поскольку нам нужны некоторые библиотеки времени выполнения, мы связываем битовый код с некоторыми другими файлами битового кода, используя llvm-gcc, чтобы получить окончательный двоичный файл.
Этот двоичный файл я не могу отладить, так как он не содержит никакой отладочной информации, хотя все связанные файлы битовых кодов содержали их. Единственное, что GDB может сказать мне, в какой функции мы находимся, но нет номеров строк и так далее ...
Буду благодарен за любые подсказки.