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

  • Når du kører under gdb under standardindstillinger, dræber Ctrl-C ikke applikationen, bare bryder ind i fejlfindingsprogrammet, hvor du kan beslutte hvad skal jeg gøre? Brug cont til " sluge " signalet, og applikationen fortsætter uforstyrret. Eller brug signal 2 til at videresende SIGINT (2) til applikationen. Eller brug kill til at dræbe applikationen.

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.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *