하나의 명령으로 gdb

하나의 명령으로 gdb

인수를 사용하여 실행 파일을 디버깅할 때 다음 시퀀스를 실행 합니다 program.arg1 arg2gdb

gdb
file ./program
run arg1 arg2
bt
quit

쉘 스크립트의 명령줄에서 동일한 작업을 어떻게 수행할 수 있습니까?

답변1

명령줄에서 옵션을 사용하여 명령을 gdb에 전달할 수 있습니다 -ex. 각 명령마다 이 작업을 반복해야 합니다. 이는 프로그램이 표준 입력을 리디렉션하지 않고 읽어야 할 때 유용합니다. 예를 들어,od -c

echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit  od

따라서 특히 문제에 대해 다음을 사용할 수 있습니다.

gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program

답변2

표준 입력을 통해 명령을 입력할 수 있습니다.

#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF

또는 명령을 입력 afile하고 gdbrun 을 사용할 수 있습니다 gdb -batch -x afile. 또는 멋진 쉘 개행(및 코더 유지 관리)을 사용하는 것을 싫어하는 경우 모든 작업을 한 줄로 수행할 수 있습니다(heredoc 버전을 표현하는 다른 방법).

gdb -q <<< "file ./program"$'\n'run$'\n'...

답변3

GDB 명령줄에서 프로그램에 인수를 전달하려면 gdb --args.

gdb --args ./program arg1 arg2
bt

관련 정보