Как вы используете C++ фильтром с отчетом llvm-cov?

Я пытаюсь использовать demangler с инструментом отчетов llvm-cov. Следующая команда, которую я запускаю:

llvm-cov report /path/to/executable -instr-profile /path/to/default.profdata /path/to/src/ -Xdemangler c++filt -Xdemangler -n

Я попытался переупорядочить параметры и попытался использовать "-Xdemangler= C++ фильтр -Xdemangler=-n" вместо этого, а также использовать --no-strip-underscore вместо -n. Он не жалуется на деманглера, тогда как, если я делаю очевидную ошибку с командным синтаксисом, он говорит мне, но вывод не деманглируется.

Из документации llvm-cov:

-Xdemangler =| Указать деманглер символа. Это может использоваться, чтобы сделать отчеты более удобочитаемыми. Эту опцию можно указывать несколько раз для предоставления аргументов деманглеру (например, -Xdemangler C++ Filter -Xdemangler -n для C++). Ожидается, что demangler будет читать список символов, разделенных символом новой строки, из stdin и записывать список строк, разделенных символом новой строки, той же длины в стандартный вывод.

Я использовал следующее, чтобы убедиться, что C++ Filter работает, и это работает:

c++filt -n _ZN4core6ZipperC2ENSt3__110shared_ptrIN8core_gen14PlatformZipperEEE

Выход:

core::Zipper::Zipper(std::__1::shared_ptr<core_gen::PlatformZipper>)

Я должен использовать опцию -n, иначе она не будет разобрана, но я в растерянности, почему llvm-cov, похоже, не использует ее правильно.

Я также пытался использовать сценарий оболочки, чтобы попытаться перехватить ввод, который llvm-cov дает деманглеру, и записать его в файл перед вызовом C++ фильт, но файл был пустым, когда я посмотрел после выполнения команды.

Я делаю что-то неправильно?

1 ответ

Решение

Похоже, что использование имен разделенных функций не везде подключено в llvm-cov.

Этот отчет (-name-regex опция необходима для получения имен функций) отвечает на -Xdemangler опция:

llvm-cov report /path/to/exe -name-regex=\.* -instr-profile=default.profdata -Xdemangler=c++filt

Я вижу, это исправлено в https://reviews.llvm.org/rL294136

Другие вопросы по тегам