Jest to polecenie goto-cc, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu MAC OS
PROGRAM:
IMIĘ
cbmc - Bounded Model Checker dla programów C/C++ i Java
STRESZCZENIE
cbmc [--własność identyfikator-własności] plik.c ...
cbmc [--pokaż-właściwości] plik.c ...
cbmc [--wszystkie-właściwości] plik.c ...
goto-cc [-I Dołącz-ścieżkę] [-C] plik.c [-lub plik wyjściowy.o]
goto-instrument w pliku plik wyjściowy
Tutaj wymieniono tylko najbardziej przydatne opcje; patrz poniżej dla reszty.
OPIS
cbmc generuje ślady, które pokazują, w jaki sposób można naruszyć twierdzenie lub dowodzi, że
asercja nie może zostać naruszona w ramach określonej liczby iteracji pętli. CBMC potrafi czytać
kod źródłowy bezpośrednio lub goto-binar wygenerowany przez goto-cc. Programy Java są podane jako
pliki klas. Bez żadnych dalszych opcji cbmc sprawdza wszystkie właściwości (automatycznie
wygenerowane lub określone przez użytkownika) znalezione w programie. Jeśli którakolwiek z właściwości może być
naruszone, kontrprzykład jest drukowany i analiza jest przerywana. Analiza może być
ograniczone do określonej właściwości z opcją --property. Wynik weryfikacji
dla wszystkich właściwości można uzyskać za pomocą opcji --all-properties.
goto-cc odczytuje kod źródłowy i generuje goto-binary. Jego interfejs wiersza poleceń to
zaprojektowany, aby naśladować to z gcc(1). Zwróć uwagę w szczególności, że goto-cc rozróżnia
fazy kompilowania i łączenia, tak jak robi to gcc. cbmc oczekuje goto-binarnego, dla którego
łączenie zostało zakończone.
goto-instrument odczytuje goto-binar, wykonuje daną transformację programu, a następnie
zapisuje powstały program jako goto-binary na dysku.
Zwykłym przepływem jest (1) przetłumaczenie źródła na goto-binar za pomocą goto-cc, a następnie (2)
wykonać oprzyrządowanie za pomocą goto-instrument, a na koniec (3) wykonać analizę za pomocą
cbmc.
OPCJE
FRONTEND OPCJE (cbmc i goto-cc)
-Ja ścieżka
Ustaw ścieżkę dołączania (C/C++)
-D makro
Zdefiniuj makro preprocesora (C/C++)
--przetwarzanie wstępne
Zatrzymaj po wstępnym przetworzeniu
--pokaż-symbol-tabela
Pokaż tabelę symboli
--pokaż-przejdź-funkcje
Pokaż goto program
ARCHITEKTONICZNY OPCJE (cbmc i goto-cc)
cbmc domyślnie używa ustawień architektonicznych, które pasują do ustawień maszyny cbmc is
wykonywane na, tj. poniższe ustawienia są potrzebne tylko podczas weryfikacji oprogramowania, które jest
przeznaczone do pracy w innej architekturze lub systemie operacyjnym. goto-cc generuje goto-binarny dla
konkretna architektura, tj. architektura nie może zostać zmieniona po tym, jak goto-binary jest
wygenerowane.
-16, --32, --64
Ustaw szerokość int
--LP64, --ILP64, --LLP64, --ILP32, --LP32
Ustaw szerokość int, long i pointers
-- little-endian
Zezwalaj na konwersje słowo-bajt typu little-endian
--big-endian
Zezwalaj na konwersje słowo-bajt typu big-endian
--unsigned-char
Ustaw domyślnie znak „char” bez znaku
--arch Ustaw docelową architekturę
--os Ustaw docelowy system operacyjny
--bez łuku
Nie twórz architektury
--brak-biblioteki
Wyłącz wbudowaną abstrakcyjną bibliotekę C
--zaokrąglenie-do-najbliższego, --zaokrąglenie-do-plus-inf, --zaokrąglenie-do-minus-inf, --zaokrąglenie-do-zera
Tryb zaokrąglania zmiennoprzecinkowego IEEE do użycia podczas uruchamiania programu (domyślnie jest to zaokrąglanie)
do najbliższego). Weryfikowany program może nadpisać to ustawienie, np. za pomocą
biesiada(3).
PROGRAM OPRZYRZĄDOWANIE OPCJE (cbmc i goto-instrument)
Obie cbmc i goto-instrument potrafi generować asercje wyłapujące określone typowe błędy,
wymienione poniżej.
--sprawdzenie granic
Włącz kontrolę granic tablic
--div-by-zero-check
Włącz dzielenie przez zero kontroli
--wskaźnik-sprawdzanie
Włącz sprawdzanie wskaźnika
--podpisane-przepełnienie-sprawdzenie
Włącz arytmetyczne sprawdzanie przepełnienia i niedopełnienia dla arytmetyki liczb całkowitych ze znakiem
--unsigned-overflow-check
Włącz arytmetyczne sprawdzanie przepełnienia i niedopełnienia dla arytmetyki liczb całkowitych bez znaku
--nan-sprawdź
Sprawdź obliczenia zmiennoprzecinkowe dla NaN
--bez twierdzeń
Ignoruj twierdzenia dostarczone przez użytkownika
--brak założeń
Ignoruj założenia podane przez użytkownika
--etykieta etykiety błędu
Sprawdź, czy dana etykieta jest nieosiągalna
PROGRAM OPRZYRZĄDOWANIE OPCJE (instrument goto tylko)
goto-instrument obsługuje dalsze, bardziej złożone przekształcenia programów.
--nondet-lotny
Sprawia, że odczyty zmiennych zmiennych nie są deterministyczne
--funkcja isr
Instrumentuje procedurę obsługi przerwań o podanej nazwie
--mmio Instrumenty we/wy mapowane w pamięci
--nondet-statyczny
Zmienne ze statycznym czasem życia są inicjowane niedeterministycznie
--dump-c
Wyjście kodu źródłowego ANSI-C zamiast binarnego goto.
BMC OPCJE (cbmc)
--wszystkie-właściwości
Zgłoś stan wszystkich nieruchomości
--pokaż-właściwości
Pokaż tylko właściwości
--show-pętle
Pokaż pętle w programie
--okładki-oświadczenia
Sprawdź, które asercje są osiągalne
--nazwa funkcji
Ustaw nazwę głównej funkcji
--identyfikator nieruchomości
Sprawdź tylko konkretną właściwość o podanym identyfikatorze
--tylko program
Pokaż tylko wyrażenie programu
--głębokość nr
Ogranicz głębokość wyszukiwania
--odpręż się nr
Rozwiń pętle nr razy
--rozwinięcie L:B,...
Rozwiń pętlę L z ograniczeniem B (użyj --show-loops, aby uzyskać identyfikatory pętli)
--pokaż-vcc
Pokaż warunki weryfikacji
--slice-formuła
Usuń przypisania niezwiązane z usługą
--nie-rozwijanie-zaświadczeń
Nie generuj odwijających się asercji
--no-ładnych-imion
Nie upraszczaj identyfikatorów
WSTECZ OPCJE (cbmc)
--dimaki
Generuj CNF w formacie DIMACS do użytku przez zewnętrzne solwery SAT
-- upiększyć-chciwy
Upiększ kontrprzykład (chciwa heurystyka)
--smt1 Cele podrzędne wyników w składni SMT1 (eksperymentalne)
--smt2 Cele podrzędne wyników w składni SMT2 (eksperymentalne)
--boolektor
Użyj Boolectora (eksperymentalnie)
--matsat
Użyj MathSAT (eksperymentalnie)
--cvc Użyj CVC3 (eksperymentalnie)
--yice
Użyj Yices (eksperymentalne)
--z3 Użyj Z3 (eksperymentalnie)
--oczyścić
Użyj procedury udoskonalania (eksperymentalnie)
--outfile nazwa pliku
Wyprowadź formułę do podanego pliku
--tablice-uf-nigdy
Nigdy nie zmieniaj tablic w niezinterpretowane funkcje
--tablice-uf-zawsze
Zawsze zmieniaj tablice w niezinterpretowane funkcje
ŚRODOWISKO
Wszystkie narzędzia uwzględniają zmienną środowiskową TMPDIR podczas generowania plików tymczasowych i
katalogi. Ponadto należy pamiętać, że preprocesor używany przez CBMC będzie korzystał ze środowiska
zmienne do lokalizacji plików nagłówkowych. GOTO-CC ma na celu zaakceptowanie wszystkich zmiennych środowiskowych, które
GCC tak.
PRAWA AUTORSKIE
2001-2014, Daniel Kroening, Edmund Clarke
Użyj goto-cc online, korzystając z usług onworks.net