Dette er noget relateret til gdb sæt overskrivning logning på skal overskrive gdb.txt korrekt? .
Lad os sige, at jeg kører en session med et eller andet program. Lad mig for eksempel tage eksemplet med qbittorrent igen.
Som delt før er dette, hvordan en kørsel sker –
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
en måde jeg ved er at afslutte applikationen yndefuldt, men nogle gange hænger applikationen / tager for meget tid eller svarer simpelthen ikke.
Så er den eneste mulighed, der er tilbage med mig, at bruge CTRL+C
som, hvis jeg forstår det rigtigt, dræber den underliggende applikation , i vores eksempel qbittorrent og derefter er i stand til at afslutte gdb ved hjælp af
(gdb) quit
Er / ville der være nogen anden måde at afslutte applikationen og stadig lade gdb-session kører, eller den eneste måde er den rå måde, jeg nævnte ovenfor.
AFAI ved, at dræbning af en ansøgningsproces skal være den sidste løsning og ikke den første.
Kommentarer
Svar
Du kan bruge signaler til dette. Inden du starter dit program, skal du oprette USR1
eller USR2
for at bryde gdb
uden at påvirke program:
handle SIGUSR1 nopass
Så kan du køre dit program, og når du skal stoppe det, skal du køre kill -USR1
fra en anden skal med den passende (barn) pid. gdb
sætter applikationen på pause, og du kan derefter tilføje breakpoints, undersøge tilstand osv., og hvis du vil, skal du fortsætte udførelsen med cont
.
gdb
under standardindstillinger, dræber Ctrl-C ikke applikationen, bare bryder ind i fejlfindingsprogrammet, hvor du kan beslutte hvad skal jeg gøre? Brugcont
til " sluge " signalet, og applikationen fortsætter uforstyrret. Eller brugsignal 2
til at videresende SIGINT (2) til applikationen. Eller brugkill
til at dræbe applikationen.