Programintrospektion
Felsökning (debugging)
När printf-felsökning inte räcker: använd en felsökare.
Debuggers låter dig interagera med körningen av ett program, så att du kan göra saker som:
- stoppa programkörning när den når en viss rad
- stega programmet rad för rad
- inspektera variabelvärden
- många fler avancerade funktioner
GDB/LLDB
GDB och LLDB. Stödjer många C-liknande språk.
Låt oss titta på example.c.
Kompilera med debug-flaggor:
gcc -g -o example example.c.
Öppna GDB:
gdb example
Några kommandon:
runb {name of function}- sätt en brytpunktb {file}:{line}- sätt en brytpunktc- fortsättstep/next/finish- stega in / stega över / stega utp {variable}- skriv ut variabelvärdewatch {expression}- sätt en bevakningspunkt som triggar när uttryckets värde ändrasrwatch {expression}- sätt en bevakningspunkt som triggar när värdet läseslayout
PDB
PDB är Pythons felsökare.
Infoga import pdb; pdb.set_trace() där du vill hoppa in i PDB.
Det är i praktiken en hybrid av felsökare (som GDB) och Python-skal.
Utvecklarverktyg i webbläsaren
Ytterligare ett exempel på en felsökare, denna gång med grafiskt gränssnitt.
strace
Observera systemanrop som ett program gör: strace {program}.
Profilering
Typer av profilering: CPU, minne, osv.
Enklaste profileraren: time.
Go
Kör testkod med CPU-profilerare: go test -cpuprofile=cpu.out
Analysera profil: go tool pprof -web cpu.out
Kör testkod med minnesprofilerare: go test -memprofile=mem.out
Analysera profil: go tool pprof -web mem.out
Perf
Grundläggande prestandastatistik: perf stat {command}
Kör ett program med profileraren: perf record {command}
Analysera profil: perf report
Licensed under CC BY-NC-SA.