Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Applicazione c++
Forum - C/C++ - Applicazione c++ - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 23:21
Giovedì, 24/06/2010
Grz gli darò un occhiata ;)

PM Quote
Avatar
BlueWay (Normal User)
Rookie


Messaggi: 49
Iscritto: 21/03/2010

Segnala al moderatore
Postato alle 9:14
Venerdì, 25/06/2010
Jaco, se ho capito bene, tu vorresti sperimentare uno dei processi che è alla base del multithreading, cioè il freeze di processi.
Per fare questo, dovresti imparare:

1-come funziona il multithreading
2-come svilupparlo genericamente
3-come applicarlo ai tuoi programmi

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:28
Venerdì, 25/06/2010
Testo quotato

Postato originariamente da BlueWay:

Jaco, se ho capito bene, tu vorresti sperimentare uno dei processi che è alla base del multithreading, cioè il freeze di processi.
Per fare questo, dovresti imparare:

1-come funziona il multithreading
2-come svilupparlo genericamente
3-come applicarlo ai tuoi programmi



ma dai, senza questo reply sembrava un thread quasi serio... hai rovinato tutto...

PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 9:30
Venerdì, 25/06/2010
in realtà un debugger non mette in pausa i programmi, è diverso..

Per fermare un programma, il debugger sovrascrive un'istruzione del programma con un codice non valido. Quando la CPU si trova ad eseguire quell'istruzione, non riuscendo a decodificare l'istruzione, scatta un interrupt di tipo Invalid Opcode. Questo interrupt viene processato tramite un jump immediato al vettore degli interrupt (che appartiene al kernel dell'OS). Una volta dentro l'interrupt handler del kernel, la richiesta viene smazzata al debugger che si occuperà di rimettere al suo posto l'istruzione originale e ti consentirà di eseguire varie operazioni sul context del processo appena interrotto (che verrà salvato in un'apposita struttura del kernel).

Questa operazione così macchinosa viene usata sia per piazzare i breakpoints, sia per fare lo stepping riga per riga. In entrambi i casi, il debugger piazzerà un'istruzione malefica nel posto corretto. Le CPU più avanzate hanno anche delle istruzioni apposite per il debugging, ma in generale è sufficiente anche usare una qualsiasi combinazione di bit che riesca a provocare un interrupt di tipo Instruction Fault, Invalid Opcode, o anche una banale syscall speciale dell'OS.

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 9:34
Venerdì, 25/06/2010
Testo quotato

Postato originariamente da TheKaneB:

in realtà un debugger non mette in pausa i programmi, è diverso..

Per fermare un programma, il debugger sovrascrive un'istruzione del programma con un codice non valido. Quando la CPU si trova ad eseguire quell'istruzione, non riuscendo a decodificare l'istruzione, scatta un interrupt di tipo Invalid Opcode. Questo interrupt viene processato tramite un jump immediato al vettore degli interrupt (che appartiene al kernel dell'OS). Una volta dentro l'interrupt handler del kernel, la richiesta viene smazzata al debugger che si occuperà di rimettere al suo posto l'istruzione originale e ti consentirà di eseguire varie operazioni sul context del processo appena interrotto (che verrà salvato in un'apposita struttura del kernel).

Questa operazione così macchinosa viene usata sia per piazzare i breakpoints, sia per fare lo stepping riga per riga. In entrambi i casi, il debugger piazzerà un'istruzione malefica nel posto corretto. Le CPU più avanzate hanno anche delle istruzioni apposite per il debugging, ma in generale è sufficiente anche usare una qualsiasi combinazione di bit che riesca a provocare un interrupt di tipo Instruction Fault, Invalid Opcode, o anche una banale syscall speciale dell'OS.



credo che questa sia fantascienza per lo starter del thread :)
banalmente chiamare una SuspendThread su ogni thread del processo basterebbe per ottenere l'effetto desiderato :D


PM Quote
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Segnala al moderatore
Postato alle 9:37
Venerdì, 25/06/2010
va beh, era tanto per demistificare il lavoro del debugger :D

PM Quote
Avatar
jaco94++ (Normal User)
Expert


Messaggi: 203
Iscritto: 22/10/2008

Segnala al moderatore
Postato alle 19:31
Domenica, 27/06/2010
Grz per le dritte cmq ho risolto :k:

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo