x-code debug di funzioni


xiloforo
 Share

Recommended Posts

Salve ancora, sto diventando un'ospite fisso su questo forum.

Allora, nuova domanda: Se io ho un programma, che mi chiama ad esempio 3 funzioni, posso eseguire un debug per ogni funzione? per vedere cosa produce quella singola funzione? Mi basterebbe che arrivato alla graffa di chiusura della funzione si fermasse e non andasse oltre quel punto nell'esecuzione.

Se è possibile, come si fa?

Dimenticavo, se può servire, programmo in C (anzi, ci provo).

Grazie.

Link to comment
Share on other sites

Metti un breakpoint dove la funzione "ritorna".

Per mettere un breakpoint clicca nella colonna grigia subito a sinistra del codice che vuoi debuggare.

Se la funzione è scritta male ed ha diversi punti di ritorno ti consiglio di wrapparla.

Ad esempio:


int dummy_sign (int theParam){
// returning in 3 different points
if (0 == theParam) return 0;
if (theParam > 0) return 1;
else return -1,
}

la trasformi in:


int wrapped_dummy_sign (int theParam){
// returning in 3 different points
if (0 == theParam) return 0;
if (theParam > 0) return 1;
else return -1,
}

int dummy_sign (int theParam){
// returning in 1 point (so it is easier to put break point)
int ret = wrapped_dummy_sign (theParam); // calling the original function
return ret;
}

Per testare le funzioni che vuoi, rinomina la main originale in main_original e costruiscitene una tu che chiama appunto le funzioni che vuoi testare. Ovviamente prima devi costruire i giusti parametri da passargli e settare in modo appropriato le variabli globali eventualmente utilizzate dalla funzione che stai testando.

Quando hai finito di testare la funzione NON cancellare la funzione main che hai usato per testarla, rinominala (ad esempio se stavi testando la dummy_sign di cui sopra) test_dummy_sign perché ti potrà tornare utile in test successivi. Quando diventerai più esperto ti costruirai delle unità di test in cui andrai ad inserire, con lievi modifiche, proprio le funzioni di test realizzate.

;)

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share