평가 기능이 있습니까? 나는 "도움"를 읽어 봤는데, 내가이 방법 디버거 gdb 평가 식
를 사용하여 grepping 내 자신의 함수를 만드는 원하기 때문에eval("gdb command")
을 만들고 싶어
찾을 didnt한다.
나는 eval($arg1)
평가 기능이 있습니까? 나는 "도움"를 읽어 봤는데, 내가이 방법 디버거 gdb 평가 식
를 사용하여 grepping 내 자신의 함수를 만드는 원하기 때문에eval("gdb command")
을 만들고 싶어
찾을 didnt한다.
나는 eval($arg1)
가 eval
명령이 만들고 싶어하지만, 정말 당신이 원하는 일을하지 않습니다. 그것은 값을 명령으로 대체하는 제한된 형태를 제공합니다.
grep의 명령을 따르는 명령은 Python으로 작성하는 것이 좋습니다. 이것은 비교적 쉽게 할 수 있습니다. 그 아이디어는 gdb.execute
을 사용하여 명령의 출력을 문자열로 캡처 한 다음 Python을 사용하여 원하는대로 문자열을 검색하는 것입니다. 파이썬에서 명령 행을 구문 분석하는 방법을 완전히 제어 할 수 있습니다. gdb define
명령을 사용하면 사실이 아닙니다.
나는 이상하게도 grep python gdb 함수를 다른 question으로 작성했습니다. 이 두 파일은 호출 스택에 _malloc이 있는지 검사하는 새로운 명령을 만듭니다. 이것은 다른 문자열 검색 및 평가 기능을위한 좋은 시작이 될 것입니다.
#!/usr/bin/python
# gdb will 'recognize' this as python
# upon 'source pygdb-logg.py'
# however, from gdb functions still have
# to be called like:
# (gdb) python print logExecCapture("bt")
import sys
import gdb
import os
def logExecCapture(instr):
# /dev/shm - save file in RAM
ltxname="/dev/shm/c.log"
gdb.execute("set logging file "+ltxname) # lpfname
gdb.execute("set logging redirect on")
gdb.execute("set logging overwrite on")
gdb.execute("set logging on")
gdb.execute("bt")
gdb.execute("set logging off")
replyContents = open(ltxname, 'r').read() # read entire file
return replyContents
# in malloc?
def inMalloc():
isInMalloc = -1;
# as long as we don't find "Breakpoint" in report:
while isInMalloc == -1:
REP=logExecCapture("n")
#Look for calls that have '_malloc' in them
isInMalloc = REP.find("_malloc")
if(isInMalloc != -1):
# print ("Malloc:: ", isInMalloc, "\n", REP)
gdb.execute("set $inMalloc=1")
return True
else:
# print ("No Malloc:: ", isInMalloc, "\n", REP)
gdb.execute("set $inMalloc=0")
return False
: 여기
는 파이썬 파일 여기
# gdb script: pygdb-logg.gdb
# easier interface for pygdb-logg.py stuff
# from within gdb: (gdb) source -v pygdb-logg.gdb
# from cdmline: gdb -x pygdb-logg.gdb -se test.exe
# first, "include" the python file:
source -v pygdb-logg.py
# define shorthand for inMalloc():
define inMalloc
python inMalloc()
end
GDB
위한 스크립트입니다