To do jisté míry souvisí s přihlášení gdb set by mělo přepsat gdb.txt správně? .
Řekněme, že spouštím relaci nějaké aplikace. Vezměme si například příklad qbittorrent.
Jak již bylo sdíleno dříve, takto se spustí běh –
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
jedním ze způsobů, jak vím, je řádné ukončení aplikace, ale někdy aplikace zablokuje / zabere příliš mnoho času nebo jednoduše neodpovídá.
Pak jediná možnost, která mi zůstane, je použití CTRL+C
které, pokud správně rozumím, zabije podkladovou aplikaci , v našem příkladu qbittorrent a poté jsem schopen ukončit gdb pomocí
(gdb) quit
Existuje / existuje nějaký jiný způsob ukončení aplikace a přesto nechat gdb relace běží dál nebo jediným způsobem je hrubý způsob, který jsem zmínil výše.
AFAI vím, že zabití procesu aplikace by mělo být posledním řešením, a ne prvním.
Komentáře
Odpovědět
K tomu můžete použít signály. Před spuštěním programu nastavte USR1
nebo USR2
rozbít gdb
bez ovlivnění program:
handle SIGUSR1 nopass
Pak můžete spustit svůj program, a pokud ho potřebujete zastavit, spusťte kill -USR1
z další skořápka s příslušným (podřízeným) pid. gdb
pozastaví aplikaci a poté můžete přidat zarážky, zkontrolovat stav atd. a pokud chcete, pokračujte v provádění pomocí cont
.
gdb
ve výchozím nastavení Ctrl-C nezabije aplikaci, pouze se rozbije do debuggeru, kde se můžete rozhodnout co dělat. Použijtecont
na " spolkněte " signál a aplikace bude nerušeně pokračovat. Nebo pomocísignal 2
předejte aplikaci SIGINT (2). Nebo pomocíkill
aplikaci zabijte.