Я пытаюсь собрать некоторую информацию из моего прохода оптимизации LLVM
во время выполнения. Другими словами, я хочу знать физический адрес конкретной инструкции IR после компиляции. Поэтому моя идея заключается в преобразовании метаданных LLVM
в данные LLVM
DWARF, которые можно использовать во время выполнения. Вместо того, чтобы прикреплять имя файла и номера строк, я хочу прикрепить свою собственную информацию. Мой вопрос состоит из двух частей:
Вот код, который может получить имя файла и номер строки инструкции:
if (DILocation *Loc = I->getDebugLoc()) { // Here I is an LLVM instruction
unsigned Line = Loc->getLine();
StringRef File = Loc->getFilename();
StringRef Dir = Loc->getDirectory();
bool ImplicitCode = Loc->isImplicitCode();
}
Но как я могу установить эти поля? Я не смог найти соответствующую функцию.
- Как посмотреть обновленную информацию об отладке во время выполнения (номера файлов и строк)? Я использовал
-g
для компиляции, но все еще не вижу отладочную информацию.
Спасибо