Dette er noe relatert til gdb-sett overskrivingslogging på skal overskrive gdb.txt riktig? .

La oss si at jeg kjører en økt med et eller annet program. La meg for eksempel ta eksemplet med qbittorrent igjen.

Som delt før dette er hvordan en kjøring skjer –

$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run 

en måte jeg vet er å avslutte applikasjonen elegant, men noen ganger henger applikasjonen / tar for lang tid eller bare ikke svarer.

Så er det eneste alternativet som er igjen med meg å bruke CTRL+C som hvis jeg forstår det riktig dreper den underliggende applikasjonen , i vårt eksempel qbittorrent og da er i stand til å avslutte gdb ved hjelp av

(gdb) quit 

Er / ville det være noen annen måte å avslutte applikasjonen og likevel la gdb-økt fortsetter å kjøre, eller den eneste måten er den rå måten jeg nevnte ovenfor.

AFAI vet at det å drepe en søknadsprosess burde være den siste løsningen og ikke den første. >

  • Når du kjører under gdb under standardinnstillinger, dreper Ctrl-C ikke applikasjonen, bare bryter inn i feilsøkingsprogrammet, hvor du kan bestemme hva du skal gjøre. Bruk cont til " svelg " signalet, og applikasjonen fortsetter uforstyrret. Eller bruk signal 2 for å sende SIGINT (2) til applikasjonen. Eller bruk kill for å drepe applikasjonen.

Svar

Du kan bruke signaler til dette. Før du starter programmet, setter du opp USR1 eller USR2 for å bryte gdb uten å påvirke program:

handle SIGUSR1 nopass 

Deretter kan du kjøre programmet ditt, og når du trenger å stoppe det, kjør kill -USR1 fra et annet skall med passende (barn) pid. gdb vil sette applikasjonen på pause, og du kan deretter legge til bruddpunkter, undersøke tilstand osv., og hvis du vil, fortsett kjøringen med cont.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *