Ez némileg összefügg a gdb beállított felülírási bejelentkezéssel felül kell írni a gdb.txt fájlt? .
Mondjuk, hogy “s azt mondom, hogy futok egy alkalmazás munkamenetét. Például hadd vegyem újra a qbittorrent példáját.
Azelőtt megosztott módon ez történik egy futtatással –
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
az egyik módja annak, hogy kecsesen lépek ki az alkalmazásból, de néha az alkalmazás lefagy / / túl sok időt vesz igénybe, vagy egyszerűen nem válaszol.
Akkor az egyetlen lehetőség, ami velem marad, a CTRL+C
használata, amely ha jól értem, megöli az alapul szolgáló alkalmazást , a qbittorrent példánkban, majd képes leszek kilépni a gdb-ből a
(gdb) quit
segítségével van-e más mód az alkalmazás bezárására, és mégis A gdb munkamenet folyamatosan fut, vagy az egyetlen mód az előbb említett durva módszer.
Az AFAI tudja, hogy egy alkalmazás megölése legyen az utolsó megoldás, és nem az első.
Megjegyzések
Válasz
Ehhez használhat jeleket. A program elindítása előtt állítsa be a USR1
vagy a USR2
elemet a gdb
töréséhez anélkül, hogy befolyásolná a program:
handle SIGUSR1 nopass
Ezután futtathatja a programot, és amikor le kell állítania, futtassa a kill -USR1
egy másik héj a megfelelő (gyermek) pid. A gdb
szünetelteti az alkalmazást, majd hozzáadhat töréspontokat, megvizsgálhatja az állapotot stb., és ha akarja, folytassa a végrehajtást a következővel: cont
.
gdb
alatt fut, a Ctrl-C nem ölti meg az alkalmazást, csak betör a hibakeresőbe, ahol eldöntheti mit kell tennie. Acont
paranccsal " nyeli " a jelet, és az alkalmazás zavartalanul folytatódik. Vagy használja asignal 2
parancsot a SIGINT (2) továbbításához az alkalmazáshoz. Vagy használja akill
alkalmazást az alkalmazás elpusztításához.