GDB를 입력했는데 help
들어오기, 나가기, 나가기 등에 대한 정보를 찾을 수 없었습니다. _start
어셈블러의 ()에 중단점을 설정 했습니다 break _start
. 그런 다음 입력 next
하고 디버깅이 완료되었습니다. 끝났기 때문에 그런 것 같지만 _start
그렇지 않습니다.안으로 들어가다내가 원하는대로.
답변1
help running
몇 가지 팁이 제공됩니다:
step
및 지시문이 있습니다 next
(그리고 또한 있습니다 nexti
) stepi
.
(gdb) help next
Step program, proceeding through subroutine calls.
Usage: next [N]
Unlike "step", if the current source line calls a subroutine,
this command does not enter the subroutine, but instead steps over
the call, in effect treating it as a single source line.
step
그래서 우리는 단계를 볼 수 있습니다입력하다서브루틴이지만 next
단일 단계로 실행됩니다.초과하다서브루틴.
및 step
( stepi
및 next
) nexti
는 "라인" 또는 "명령어" 증분으로 구분됩니다.
step -- Step program until it reaches a different source line
stepi -- Step one instruction exactly
관련 사항은 다음과 같습니다 finish
.
(gdb) help finish
Execute until selected stack frame returns.
Usage: finish
Upon return, the value returned is printed and put in the value history.
더 유용한 정보는 다음 위치에 있습니다.https://sourceware.org/gdb/onlinedocs/gdb/Continuing-and-Stepping.html
답변2
"Finish" 명령을 사용하십시오. 이는 때때로 "Step Out"과 동일한 작업을 수행합니다. 스택이 수행하는 작업(일반적으로 함수)을 완료한 후 다음 줄로 이동합니다. 자세한 내용은 명령을 참조하세요.
답변3
저도 같은 문제가 있어서 여기에 왔습니다. 결국 나는 내 목적을 위해 루프의 "step out"과 같은 것을 사용할 수 있을 때마다 루프 뒤에 또 다른 중단점을 설정한 다음 프로그램이 continue
루프를 완료하고 이어서 중단점까지 실행되도록 할 수 있다는 것을 발견했습니다. 이것이 대부분의 사람들에게 당연하다면 죄송합니다. 하지만 이 질문에 대한 답을 찾는 누군가에게는 도움이 될 수 있습니다.