2016-05-18 50 views
7

Mam program, który nie działa sporadycznie, ale z tym samym błędem. Aby go usunąć, chciałbym uruchomić go w GDB, dopóki nie zawiedzie, ustawić punkty przerwania i ponownie uruchomić. co mam zrobić:Jak ponownie uruchomić program w GDB kilka razy?

gdb --args /path/to/program <program args> 

Ale nie mogę znaleźć nigdzie jak mam powiedzieć GDB „Uruchom ten program 100 razy” na przykład.

+1

Zmień nazwę 'main()' na 'mój_program()' i dodaj 'int main()', który wywołuje 'my_program()' 100 razy? (Wiem, że to może przerwać niektóre z trudniejszych programów, które robią rzeczy z 'atexit()' itd., Ale może to służyć jako obejście.) – DevSolar

+3

Napisz skrypt bash lub dos, aby uruchomić go 100 razy. – Gregg

+0

@Gregg wydaje się być jedynym rozwiązaniem – sotona

Odpowiedz

5

Ten skrypt gdb uruchomi program 100 razy lub do momentu otrzymania sygnału. $_siginfo jest nieważny, jeśli program został zatrzymany z powodu sygnału i jest nieważny, jeśli program został zakończony. O ile mogę powiedzieć, zatrzymanie procesu, w tym punktów przerwania, punktów obserwacyjnych i pojedynczego kroku, ustawi na $_siginfo coś.

5

Najprostszym rozwiązaniem można myślę, jest uruchomienie programu w nieskończonej pętli while, aż ulegnie awarii lub naciśnięciu Ctrl + C przerwać pętlę.

(gdb) while 1 
>run 
>end 
+0

Krótkie i proste rozwiązanie :) –