Detta är något relaterat till gdb-inställning för överskrivning inloggning om borde skriva över gdb.txt korrekt? .

Låt oss säga att jag kör en session med någon applikation. Låt mig till exempel ta exemplet med qbittorrent igen.

Som delad tidigare så är det hur en körning händer –

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

ett sätt jag vet är att avsluta applikationen elegant men ibland hänger applikationen / tar för mycket tid eller svarar helt enkelt inte.

Då är det enda alternativet som finns kvar med mig att använda CTRL+C som om jag förstår rätt dödar den underliggande applikationen , i vårt exempel qbittorrent och sedan kan sluta gdb med hjälp av

(gdb) quit 

Finns / skulle det finnas något annat sätt att avsluta applikationen och ändå låta gdb-session fortsätter att köra eller det enda sättet är det råa sättet jag nämnde ovan.

AFAI vet att döda en ansökningsprocess ska vara den sista lösningen och inte den första.

Kommentarer

  • När du kör under gdb under standardinställningar dödar inte Ctrl-C applikationen, utan bryter bara in i felsökaren, där du kan bestämma vad ska man göra. Använd cont till " sväljer " signalen och applikationen fortsätter ostörd. Eller använd signal 2 för att skicka SIGINT (2) till applikationen. Eller använd kill för att döda applikationen.

Svar

Du kan använda signaler för detta. Innan du startar ditt program, ställ in USR1 eller USR2 för att bryta gdb utan att påverka program:

handle SIGUSR1 nopass 

Sedan kan du köra ditt program, och när du behöver stoppa det, kör kill -USR1 från ett annat skal med lämplig (barn) pid. gdb pausar applikationen och du kan sedan lägga till brytpunkter, undersöka tillstånd etc., och om du vill fortsätta körningen med cont.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *