Chcę ustawić punkt przerwania dla parametru funkcji, jeśli jest on większy niż pewna wartość. Kod manekin poniżej:Parametr funkcji warunkowego przerwania GDB
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
}
Próbowałem ustawić punkt przerwania przez:
(gdb) b calc if size == 852479
ale nie wiem, jaki rozmiar jest ponieważ jest to parametr zgaduję. Jak bym się zepsuł, gdyby parametr był równy określonej liczbie. NIE jest to opcja włamania się do wszystkich wywołań tej funkcji, ponieważ nazywa się ją miliard razy w środowisku wielowątkowym.
możliwy duplikat [W jaki sposób ustawić warunkowy punkt przerwania w gdb, gdy znak \ * x wskazuje na ciąg o wartości równej "hello"?] (Http://stackoverflow.com/questions/4183871/how-do -i-set-a-conditional-breakpoint-in-gdb-when-char-x-points-to-a-string-wh) –
Czy próbowałeś ustawić punkt przerwania w pierwszym wierszu kodu funkcji? – Leeor
@RickyMutschlechner Spojrzałem na to 1 i nie jest to duplikat, ponieważ w przypadku tego kodu x (rozpatrywana zmienna) zakłada się, że gdb będzie mógł się włamać, ponieważ jest to zmienna zadeklarowana poza funkcją. W moim przypadku ta zmienna jest parametrem funkcji. Z powodzeniem potrafię przełamać zmienne zadeklarowane poza funkcją, ale nie mogę przełamać parametrów poprzez przerwanie warunkowe. –