Как вы используете 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 ++ фильт, но файл был пустым, когда я посмотрел после выполнения команды.

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

4

Решение

Похоже, что использование имен разделенных функций не везде подключено в 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

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]