ma różne środki dezynfekujące, które można włączyć, aby złapać problemy w czasie wykonywania.
Istnieje jednak kilka środków odkażających, których nie mogę używać razem. Dlaczego?Dlaczego nie można włączyć wszystkich środków do dezynfekcji?
clang++-3.9 -std=c++1z -g -fsanitize=memory -fsanitize=address -o main main.cpp 1
clang: error: invalid argument '-fsanitize=address' not allowed with '-fsanitize=memory'
To nie jest wielka sprawa, ale gdy uruchomię moich testów jednostkowych, to trwa dłużej niż powinno, bo mam utworzyć wiele plików binarnych dla tych samych testów i uruchomić każdy z nich oddzielnie.
clang++-3.9 -std=c++1z -g -fsanitize=address -o test1 test.cpp
clang++-3.9 -std=c++1z -g -fsanitize=memory -fsanitize=undefined -o test2 test.cpp
Zgaduję, że niektóre oprzyrządowanie jest po prostu niezgodne - np. oprzyrządowanie do jednego odkażacza dawałoby fałszywe alarmy lub fałszywe negatywy w drugim. Ale byłbym bardzo zainteresowany szczegółami technicznymi. – MikeMB
"kiedy przeprowadzam testy jednostkowe, to trwa to dłużej niż powinno" -> wygląda na to, że nie używasz '-O". '-O1' jest bezpieczny w użyciu z dezynfekcją pamięci i nie uszkadza tropów stacków (oprócz wywołań) – viraptor
@viraptor Dzięki, to jest dobra uwaga. Miałem również na myśli faktyczny czas kompilacji. Budowanie wielu plików binarnych w celu testowania tych samych składników oprogramowania. –