Tworzenie wersji debugującej
Ten przewodnik opisuje lokalny przebieg debugowania dla Lumi przy użyciu skryptów w build/lumi/scripts.
Przepływ pracy ma na celu:
- używaj lokalnych artefaktów kompilacji (nie jest wymagane pobieranie symboli),
- sprawdź, czy symbole debugowania są rzeczywiście obecne,
- domyślnie uruchamiaj GDB w trybie symboli offline.
Warunki wstępne
- Linux oparty na Debianie (baza projektu: Debian 13)
- Drzewo źródeł Lumi zostało już sklonowane
Jednorazowa konfiguracja GDB (opcjonalna, ale zalecana)
Zainstaluj narzędzia GDB:
sudo apt update
sudo apt install gdb gdbserverOpcjonalna konfiguracja lokalnego rejestrowania:
mkdir -p ~/code/gdb_logs
cat > ~/.gdbinit <<'EOF'
set logging file ~/code/gdb_logs/gdb_log.txt
set logging enabled on
set logging overwrite on
EOFUwaga: lokalne skrypty debugowania Lumi domyślnie wyłączają debuginfod, aby zachować lokalną i powtarzalną rozdzielczość symboli.
Szybki start
Z katalogu skryptów:
cd ~/code/lumi-dev/build/lumi/scriptsDebuguj kompilację + uruchamianie (domyślnie)
Użyj tego do normalnych sesji debugowania.
bash lumi-debug-local.sh lumi-dev buildTo polecenie:
- buduje Lumi w trybie debugowania,
- weryfikuje symbole debugowania,
- uruchamia Lumi pod GDB.
Tylko kompilacja debugowania (na późniejszą sesję TTY/zdalną)
Użyj tego, jeśli chcesz teraz skompilować i uruchomić/debugować później.
bash lumi-build-debug.sh lumi-dev buildUżywanie TTY w Linuksie
TTY (konsole tekstowe) są często najbardziej niezawodnym sposobem na debugowanie twardych zawieszeń.
- Przełącz na TTY za pomocą
Ctrl + Alt + F1doCtrl + Alt + F6 - Zaloguj się z podpowiedzi tekstowej
- Wróć do sesji graficznej z
Ctrl + Alt + F7(lubF2w niektórych systemach)
Dlaczego to ma znaczenie: jeśli sesja pulpitu zostanie zatrzymana, TTY często nadal odpowiada, dzięki czemu można podłączyć GDB, przechwycić ślad wstecz i odzyskać przydatne dane o awarii.
Opcjonalnie: debugowanie zdalne/TTY
W przypadku twardego zawieszania się lub zawieszania wyświetlania użyj gdbserver:
cd ~/code/lumi-dev/build/lumi/scripts
bash gdbserver.shNastępnie z TTY (zalecane w przypadku scenariuszy zawieszenia) lub innego terminala:
gdb /home/mark/code/lumi-dev/bin/lumi-0.1
(gdb) target remote localhost:9999
(gdb) continueW przypadku lokalnego uruchomienia GDB (ścieżka inna niż TTY):
bash lumi-debug-launch.sh --repo lumi-devUwaga dotycząca wydajności
Kompilacje debugowania są z założenia wolniejsze. Po zakończeniu debugowania wróć do szybszej kompilacji:
cd ~/code/lumi-dev/build/lumi/scripts
# Full release reset of all major components
bash lumi-debug-reset-release.sh lumi-dev
# Optional faster local-only variant
bash lumi-build-script.sh --scope build --dir lumi-dev --type debugoptimized