Zajmuję się tworzeniem aplikacji, którą rodzic prosi dziecko o obsługę określonych zadań. Występuje problem polegający na tym, że skonfigurowałem gdb do podążania za potomkiem, ale po rozwidleniu, po osiągnięciu punktu przerwania wysyła on SIGTRAP, ale dziecko w jakiś sposób kończy działanie i wysyła SIGCHLD do rodzica.gdb debugowanie procesu potomnego po rozwidleniu (skonfigurowane dziecko podążające za widżetem)
Skonfigurowałem skonfigurowałem przed rejestracją signal(SIGTRAP, SIG_IGN)
, więc rozumiem, że dziecko powinno dziedziczyć i ignorować SIGTRAP po osiągnięciu punktu przerwania, ale tak się nie dzieje.
Proszę mi pomóc zrozumieć, jeśli jestem niepoprawny.
Jak mogę skutecznie debugować proces potomny?
„* ... po osiągnięciu punktu przerwania, wysyła SIGTRAP ... *” to sposób debugger jest powiadamiany o zerwaniu. "* ... dziecko jakoś się kończy ... *" kończy się normalnie lub nienormalnie? Możesz użyć 'WIFEXITED (status)' na wartości zwróconej przez 'wait [...] ([...,] & status [, ...])' w rodzica, aby to sprawdzić. Zobacz 'man 3 wait', aby poznać szczegóły. – alk