Sto sviluppando un'applicazione che il genitore forchetta un figlio per gestire determinate attività. Sto riscontrando un problema in cui ho configurato gdb in modalità follow-fork-mode, ma dopo il fork, dopo aver raggiunto un breakpoint, invia un SIGTRAP ma il bambino in qualche modo termina e invia SIGCHLD al genitore.gdb debug del processo figlio dopo il fork (modalità figlio in modalità follow-fork configurata)
Ho configurato signal(SIGTRAP, SIG_IGN)
prima di fork, quindi la mia comprensione è che il figlio deve ereditare e ignorare SIGTRAP quando viene raggiunto il punto di interruzione ma non sta succedendo.
Per favore aiutami a capire questo se non sono corretto.
Come è possibile eseguire correttamente il debug del processo figlio?
"* ... dopo aver raggiunto un punto di interruzione, invia un SIGTRAP ... *" questo è il modo in cui il debugger viene notificato il punto di interruzione. "* ... il bambino in qualche modo termina ... *" termina normalmente o in modo anomalo? Puoi usare 'WIFEXITED (status)' sul valore restituito da 'wait [...] ([...,] & status [, ...])' nel genitore per verificarlo. Vedi 'man 3 wait' per i dettagli. – alk