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
.