У меня есть две основные функции, которые используют общий класс С++.
Файл1: main.cpp
#include <iostream>
#include "HelloAnother.h"
int main() {
HelloAnother::sayHello1();
return 0;
}
Файл2: main2.cpp
#include <iostream>
#include "HelloAnother.h"
int main() {
HelloAnother::sayHello2();
return 0;
}
Файл 3: HelloAnother.h
#pragma once
class HelloAnother {
public:
static void sayHello1();
static void sayHello2();
};
Файл4: HelloAnother.cpp
#include <iostream>
#include "HelloAnother.h"
void HelloAnother::sayHello1() {
std::cout << "Hello 1!!!" << std::endl;
}
void HelloAnother::sayHello2() {
std::cout << "Hello 2 !!!" << std::endl;
}
Теперь я компилирую два исполняемых файла: clang-3.8 -o main -fprofile-arcs -ftest-coverage --coverage -g -fPIC -lstdc++ main.cpp HelloAnother.cpp
clang-3.8 -o main2 -fprofile-arcs -ftest-coverage --coverage -g -fPIC -lstdc++ main2.cpp HelloAnother.cpp
Теперь я бегу ./main
Привет 1!!!
Когда я перезапускаю ./main
Привет 1!!!
профилирование: /media/sf_ubuntu-shared/test-profiling/main.gcda: невозможно сопоставить: неверный аргумент профилирование: /media/sf_ubuntu-shared/test-profiling/HelloAnother.gcda: невозможно сопоставить: неверный аргумент
Одна секунда запуска, я получаю эту ошибку (выше) при попытке создать/объединить файлы .gcda.
Теперь, если я попытаюсь запустить ./main2
привет 2!!!
профилирование: /media/sf_ubuntu-shared/test-profiling/HelloAnother.gcda: невозможно сопоставить: неверный аргумент
Когда я создаю отчет о покрытии кода, вызов второй функции не отображается, как будто вызов не был сделан.
Может ли кто-нибудь помочь мне отладить эту проблему, пожалуйста? Проблема, по-видимому, связана с объединением файлов .gcda при нескольких запусках, но не знаю, как ее решить.
Я также пробовал clang-3.5, но с теми же результатами.
$ uname -a : Linux pratik-ubuntu 4.2.0-27-generic #32~14.04.1-Ubuntu SMP Fri Jan 22 15:32:26 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
Я установил clang с помощьюapt-get install
. - person Pratik Bansal   schedule 23.07.2016