Nice programing

GDB에서 실행 파일을 자동으로 실행하는 방법은 무엇입니까?

nicepro 2020. 10. 9. 12:23
반응형

GDB에서 실행 파일을 자동으로 실행하는 방법은 무엇입니까?


gdb"실행"을 입력 한 것처럼 실행 파일 즉시 실행하고 싶습니다 (동기 : "실행"입력을 싫어합니다).

한 가지 방법은 gdb다음과 같이 명령을 파이프하는 것입니다.

$ echo run | gdb myApp

그러나이 접근 방식의 문제는 gdb를 들어와의 상호 작용을 잃는다는 것입니다 . 중단 점이 트리거되거나 myApp충돌하면 gdb종료됩니다. 이 방법은 여기에서 설명 합니다 .

의 옵션을 살펴보면이 --help작업을 수행 할 수있는 방법이 없지만 아마도 뭔가 누락 된 것 같습니다.


gdb -ex run ./a.out

인수를 전달해야하는 경우 a.out:

gdb -ex run --args ./a.out arg1 arg2 ...

편집 : Orion 은 이것이 Mac OSX에서 작동하지 않는다고 말합니다.

-ex플래그는 GDB-6.42005 년에 출시 된 이후로 사용 가능 했지만 OSX는 Apple의 GDB 포크를 사용하고 Leopard 용 최신 XCode에는이 포함되어 GDB 6.3.50-20050815 (Apple version gdb-967)있으므로 운이 좋지 않습니다.

현재 GDB-7.0.1릴리스를 빌드하는 것이 가능한 솔루션 중 하나입니다. 그냥 읽으십시오 .


gdb 스크립트를 사용합니다.

gdb -x your-script

여기서 당신의 스크립트가 같은 것을 포함

file a.out
b main
r

나중에 일반 대화식 gdb 프롬프트가 표시됩니다.

수정 :

다음은 진정으로 게으른 사용자를위한 최적화입니다.

  1. 로 스크립트를 저장 .gdbinit에서 working directory.
  2. 나중에 gdb를 다음과 같이 실행하면됩니다.

    gdb

... 그리고 gdb는 .gdbinit의 내용을 자동으로로드하고 실행합니다.


(echo r ; cat) | gdb a.out

cat을 사용하면 gdb가 중단 된 후에도 계속 입력 할 수 있습니다.


start 명령

이 명령은 또 다른 좋은 옵션입니다.

gdb -ex start --args ./a.out arg1 arg2

실행과 같지만 임시 중단 점을 설정하고 main거기 에서 중지합니다.

이 임시 중단 점이 적중되면 비활성화됩니다.

starti

starti프로그램을 시작하고 그 대신 첫 번째 명령어에서 중지 하는 관련 항목도 있습니다. 참조 : GDB의 첫 번째 기계 코드 명령어에서 중지

낮은 수준의 작업을 할 때 좋습니다.


gdb -x <(echo run) --args $program $args

참고 URL : https://stackoverflow.com/questions/2119564/how-to-automatically-run-the-executable-in-gdb

반응형