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

  • Amikor az alapértelmezett beállítások alatt gdb alatt fut, a Ctrl-C nem ölti meg az alkalmazást, csak betör a hibakeresőbe, ahol eldöntheti mit kell tennie. A cont paranccsal " nyeli " a jelet, és az alkalmazás zavartalanul folytatódik. Vagy használja a signal 2 parancsot a SIGINT (2) továbbításához az alkalmazáshoz. Vagy használja a kill alkalmazást az alkalmazás elpusztításához.

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.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük