Como encerrar um aplicativo em execução no gdb normalmente quando o aplicativo não está respondendo.

0

Isso é um pouco relacionado a conjunto de gdb Sobrescrever o registro deve sobrescrever o gdb.txt correto? .

Digamos que eu esteja executando uma sessão de algum aplicativo. Por exemplo, deixe-me tomar o exemplo do qbittorrent novamente.

Como compartilhado antes, é assim que acontece uma corrida -

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

uma maneira que eu sei é sair do aplicativo normalmente, mas às vezes o aplicativo trava / leva muito tempo ou simplesmente não responde.

Em seguida, a única opção que permanece comigo é usar CTRL+C , que se eu entendi corretamente mata o aplicativo subjacente, no nosso exemplo qbittorrent e, em seguida, sou capaz de sair do gdb por meio de

(gdb) quit

É / haveria qualquer outra maneira de sair do aplicativo e ainda deixar a sessão do gdb continuar em execução ou a única maneira é a maneira grosseira que mencionei acima.

AFAI sabe matar um processo de candidatura deve ser a última solução e não o primeiro.

    
por shirish 19.10.2017 / 16:50

1 resposta

1

Você pode usar sinais para isso. Antes de iniciar seu programa, configure USR1 ou USR2 para quebrar gdb sem afetar o programa:

handle SIGUSR1 nopass

Em seguida, você pode executar seu programa e, quando precisar pará-lo, execute kill -USR1 de outro shell com o pid (filho) apropriado. gdb irá pausar o aplicativo e você poderá adicionar pontos de interrupção, examinar o estado etc. e, se desejar, continuar a execução com cont .

    
por 19.10.2017 / 17:02