Fish Shell:
Att använda en debugger
Hur man gör:
Fish har inte en inbyggd debugger som vissa andra skal, men du kan använda externa verktyg som gdb
för att debugga kompilerade program eller fish -d
för att köra fish med debug-utdata på olika nivåer. Låt oss köra med fish -d
:
# Kör fish shell med debug-nivå 2
fish -d2
# I fish skalet, låt oss testa en enkel funktion med en potentiell bugg
function test_func
set val 42
echo "Värdet är $val"
if test $val -eq 42
echo "Allt är väl."
else
echo "Något är fiskigt."
end
end
# Anropa funktionen och observera debug-utdatan
test_func
Du skulle se extra debug-utdata före och efter att funktionen körs, vilket hjälper dig att peka ut problem.
Fördjupning
Historiskt sett har felsökning i Unix-liknande miljöer varit en domän för specialiserade verktyg som gdb
för C/C++ eller pdb
för Python. I Fish är du oftast beroende av externa verktyg eller inbyggda funktioner som functions -v
för utförlig utdata av funktioner och set -x
för att spåra variabeländringar.
Vissa väljer alternativa skal som Bash på grund av funktioner som set -x
för att debugga skript. Dock har Fish sin charm med fokus på användarvänlighet och interaktivitet, vilket kan reducera behovet av hård felsökning i många fall.
När det gäller implementeringen, involverar felsökning av ett skript ofta att köra det med utförlig utdata och spåra var variabler sätts, avsätts eller ändras på oväntade sätt. Med Fishs färgkodade utdata och användarvänliga tillvägagångssätt kan du ofta undvika det trassliga i felsökningen – men när du är fast, kom ihåg att utförlighet och tydlighet är dina bästa verktyg.
Se också
Här är några pålitliga livlinor för när du är upp över öronen i kod:
- Fish dokumentation om felsökning: https://fishshell.com/docs/current/index.html#debugging
- GDB (GNU Debugger) officiella guide: https://www.gnu.org/software/gdb/documentation/
- Stack Overflow Fish-taggen - verkliga felsökningsfall: https://stackoverflow.com/questions/tagged/fish
- Avancerad Bash-skriptguide - för att jämföra felsökningsmetoder: https://tldp.org/LDP/abs/html/debugging.html