Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148

    [C] funzione fork() e debug

    Ciao a tutti ho un problema riguardo al debug. Sono su unix quindi uso gdb il problema è che quando faccio fork non riesco a vedere cosa fa il processo figlio ma solo il padre. Come si può fare???
    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [C] funzione fork() e debug

    Originariamente inviato da andry85
    Ciao a tutti ho un problema riguardo al debug. Sono su unix quindi uso gdb il problema è che quando faccio fork non riesco a vedere cosa fa il processo figlio ma solo il padre. Come si può fare???
    Grazie
    http://sourceware.org/gdb/current/on...b_5.html#SEC28
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148
    Grazie mille il problema è che facendo set follow-fork-mode child continua a non seguirmi il figlio..... come devo fare??

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da andry85
    Grazie mille il problema è che facendo set follow-fork-mode child continua a non seguirmi il figlio..... come devo fare??
    Se leggevi bene la pagina:
    "Currently, the only platforms with this feature are HP-UX (11.x and later only?) and GNU/Linux (kernel version 2.5.60 and later)."

    Sulla slackware su cui ho fatto la prova (kernel 2.4.26) infatti non funziona neanche a me.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148
    Quindi non è possibile seguire il debug del figlio?

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da andry85
    Quindi non è possibile seguire il debug del figlio?
    Certo ... ma è più "rognoso".

    Nel child metti all'inizio un codice del tipo:

    printf ("Child pid=%d\n", getpid ());
    getchar ();

    in modo che stampi il pid del figlio e resti in attesa di un tasto.

    Quindi apri una nuova shell e avvii una nuova istanza del gdb specificandogli però, nota bene, di "attaccarsi" ad un processo specifico:

    gdb --pid=XXX nomeprogramma

    dove XXX è il pid del tuo processo child. A quel punto il gdb è fermo dentro la getchar() (la funzione esatta in cui è dentro è sicuramente una read() ... insomma a più basso livello).

    Quindi vai avanti come vuoi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    148
    Ho un altro problema con la fork. Praticamente mi serve un contatore che incremento ogni volta che creo un figlio. Nel momento in cui vado a creare un altro figlio devo controllare il contatore che non superi un certo valore. Il problema è che ogni volta che forko un figlio il contatore viene reinizializzato a 0.... Che dovrei fare?

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da andry85
    Ho un altro problema con la fork. Praticamente mi serve un contatore che incremento ogni volta che creo un figlio. Nel momento in cui vado a creare un altro figlio devo controllare il contatore che non superi un certo valore. Il problema è che ogni volta che forko un figlio il contatore viene reinizializzato a 0.... Che dovrei fare?
    A seguito di una fork, padre e figlio "condividono" le stesse pagine di memoria ma alla prima scrittura in memoria da parte di uno dei due (padre o figlio), la pagina viene duplicata e quindi differenziata tra padre e figlio (tecnica COW, copy-on-write).

    A questo punto la domanda: ma questo contatore ti serve nel padre o nel figlio?? Io credo che ti serva nel processo padre, anche perché avrebbe poco senso che un figlio sappia quanti altri figli ci sono!

    Nel processo padre non vedo problemi: metti una variabile che poi incrementi dopo la fork ma sempre nel processo padre!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.