Pisałem na klawiaturze, help
gdy byłem w GDB, ale nie znalazłem nic na temat wkroczenia, przejścia i wyjścia. Umieszczam punkt przerwania w programie asemblera w _start
( break _start
). Następnie napisałem next
i zakończyłem debugowanie. Myślę, że było tak, ponieważ zakończyło się _start
i nie wkroczyło tak, jak chciałem.
Ktoś, kto może pomóc?
debugging
programming
gdb
Pichi Wuana
źródło
źródło
Odpowiedzi:
help running
zawiera kilka wskazówek:Istnieją
step
inext
instynkty (a takżenexti
istepi
).Tak więc widzimy, że
step
kroki język podprogramów, alenext
zwiększy się podprogramów.I
step
orazstepi
(inext
inexti
) odróżniają się przyrostami „linii” lub „instrukcji”.Powiązane jest
finish
:O wiele bardziej przydatne informacje można znaleźć na stronie https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
źródło
for(i=0;i<10;i++) { printf("%d\n",i); }
to jedna linia źródłowa, ale wiele instrukcji.finish
Polecenie zakończyć bieżącą ramkę stosu, który zwykle zakończyć bieżącą podprogram i powrót do wywołującego.Przyjechałem tutaj, ponieważ miałem to samo pytanie. W końcu doszedłem do wniosku, że w dowolnym momencie mogę użyć czegoś takiego jak „wyjście z pętli”, mogę po prostu ustawić kolejny punkt przerwania po pętli, a następnie pozwolić programowi
continue
zakończyć pętlę i uruchomić się do punktu przerwania później. Przykro nam, jeśli jest to oczywiste dla większości osób, ale prawdopodobnie jest pomocne dla kogoś, kto szuka odpowiedzi na to pytanie.źródło