Toolverse
Wszystkie skille

bisect-ssa-pass

autor: noir-lang

Debuguj błędy optymalizacji SSA w Noir — automatycznie znajdź przejście, które psuje semantykę programu

Instalacja

Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.

Instalacja

Szybkie info

Kategoria
DevOps

O skillu

Skill do debugowania błędów w pipeline'u SSA (Static Single Assignment) kompilera Noir. Gdy program zmienia zachowanie podczas optymalizacji SSA, ta umiejętność automatycznie bisektuje poszczególne przejścia, aby wskazać, które z nich narusza semantykę kodu. Przydatna dla programistów pracujących nad Noir, którzy natrafili na błędy znalezione przez fuzzer pass_vs_prev lub zauważyli nieoczekiwane wyniki wykonania. Umożliwia szybkie zidentyfikowanie problematycznego przejścia bez ręcznego testowania każdego kroku.

Jak używać

  1. Przygotuj projekt Noir z plikiem Prover.toml zawierającym dane wejściowe, które ujawniają problem — program powinien produkować nieprawidłowe wyniki lub zachowywać się nieoczekiwanie.
  2. Skompiluj projekt z flagą --show-ssa, aby wygenerować wyjście SSA po każdym przejściu optymalizacyjnym: nargo compile --show-ssa i zapisz wynik do pliku (np. ssa_output.txt). Nie używaj poleceń obcinających wyjście (takich jak head) — czekaj, aż kompilacja się całkowicie zakończy i wszystkie przejścia zostaną zapisane.
  3. Sprawdź, czy plik zawiera wszystkie przejścia, uruchamiając grep -E "^After " ssa_output.txt — powinno być około 49 przejść.
  4. Podziel wyjście SSA na osobne pliki dla każdego przejścia, używając dostarczonego skryptu: ./scripts/split-ssa-passes.sh ssa_output.txt ssa_passes.
  5. Oczyść pliki z nagłówków i diagnostyki za pomocą skryptu: ./scripts/clean-ssa-passes.sh ssa_passes.
  6. Uruchom bisekt na przejściach, aby zidentyfikować, które z nich zmienia zachowanie programu — skill automatycznie przetestuje każde przejście i wskaże problematyczne.

Podobne skille