gdb에서 한 번에 두 개의 명령을 실행하려고합니다.
finish; next
나는 ';' 명령을 분리했지만 gdb는 한 번에 두 가지를 모두 수행하지 못했습니다.
';'으로 구분 된 bash 명령과 비슷한 gdb에서 여러 명령을 수행 할 수 있습니까? 구분자?
gdb에서 한 번에 두 개의 명령을 실행하려고합니다.
finish; next
나는 ';' 명령을 분리했지만 gdb는 한 번에 두 가지를 모두 수행하지 못했습니다.
';'으로 구분 된 bash 명령과 비슷한 gdb에서 여러 명령을 수행 할 수 있습니까? 구분자?
답변:
에서 파이썬 통합을 사용하여이 작업을 수행 할 수 있습니다 gdb
.
s ; bt
밟고 백 트레이스를 인쇄 하면 좋을 것 입니다.
파이썬 인터프리터를 호출하여 동일한 작업을 수행 할 수 있습니다.
python import gdb ; print(gdb.execute("s")) ; print(gdb.execute("bt"))
이것을 파이썬 정의로 뒷받침되는 전용 명령 (여기서는 "cmds")으로 마무리 할 수 있습니다.
다음은 .gdbinit
여러 명령을 실행하는 기능으로 확장 된 예 입니다.
# multiple commands
python
from __future__ import print_function
import gdb
class Cmds(gdb.Command):
"""run multiple commands separated by ';'"""
def __init__(self):
gdb.Command.__init__(
self,
"cmds",
gdb.COMMAND_DATA,
gdb.COMPLETE_SYMBOL,
True,
)
def invoke(self, arg, from_tty):
for fragment in arg.split(';'):
# from_tty is passed in from invoke.
# These commands should be considered interactive if the command
# that invoked them is interactive.
# to_string is false. We just want to write the output of the commands, not capture it.
gdb.execute(fragment, from_tty=from_tty, to_string=False)
print()
Cmds()
end
예제 호출 :
$ gdb
(gdb) cmds echo hi ; echo bye
hi
bye
나는 가로 질러 또 다른 방법 여기 배쉬 문서를 사용 GDB에 여러 명령을 할 수있다.
예:
cat << EOF | gdb
print "command_1"
print "..."
print "command_n"
EOF
명령 목록을 실행 한 후 GDB가 종료되므로 값 / 사용성 IMO가 제한됩니다.
execlp("gdb", "gdb", "-batch", "-n", "-ex", "bt full", ...
페이지 매김을 끌 수 없습니다.