Desidero impostare un punto di interruzione su un parametro funzione se è maggiore di un determinato valore. codice fittizio di seguito:Interruzione condizionale GDB su parametro funzione
int main(void)
{
uint64_t num = 123456;
uint64_t x = 847534;
uint64_t other = (num*x) - (x/num);
.... other stuff here (multithreaded stuff)
calc(other);
}
void calc(uint64_t size)
{
...do some stuff with size
}
Ho cercato di impostare un punto di interruzione:
(gdb) b calc if size == 852479
ma non sa che cosa è formato dal momento che è un parametro sto cercando di indovinare. Come potrei interrompere se il parametro è uguale a un certo numero. NON è un'opzione per interrompere tutte le chiamate a questa funzione perché viene chiamata un miliardo di volte nell'ambiente multithread.
possibile duplicato di [Come impostare un punto di interruzione condizionale in gdb, quando char \ * fa riferimento a una stringa il cui valore equivale a "ciao"?] (Http://stackoverflow.com/questions/4183871/how-do -i-set-a-condizionale-breakpoint-in-gdb-quando-char-x-punti-a-una-stringa-wh) –
Hai provato a impostare il punto di interruzione sulla prima riga del codice funzione? – Leeor
@RickyMutschlechner Ho guardato a quello 1 e non è un duplicato perché nel caso di quel codice x (la variabile in questione) si presume che sia disponibile da gdb per interrompere perché è una variabile dichiarata al di fuori di una funzione. Nel mio caso questa variabile è il parametro di una funzione. Sono in grado di rompere con successo le variabili dichiarate al di fuori di una funzione ma non in grado di rompere i parametri tramite l'interruzione condizionale –