評価関数はありますか?私は「ヘルプ」を読んでいると私は、私はこの方法デバッガgdb評価式
How to grep on gdb printを使用してgrepをするために自分自身の関数を作成したいので、私はeval("gdb command")
を作りたい
を見つけるdidntの。
は私がeval($arg1)
評価関数はありますか?私は「ヘルプ」を読んでいると私は、私はこの方法デバッガgdb評価式
How to grep on gdb printを使用してgrepをするために自分自身の関数を作成したいので、私はeval("gdb command")
を作りたい
を見つけるdidntの。
は私がeval($arg1)
がeval
コマンドがあるようにしたいが、それは本当にあなたがやりたいことはありません。これは、値をコマンドに置き換える限られた形式を提供します。
grepの行に沿ったコマンドについては、Pythonで書くことをお勧めします。これは比較的簡単に行うことができます。考え方はgdb.execute
を使用してコマンドの出力を文字列に取り込み、Pythonを使用して文字列を検索します。 Pythonからコマンドラインを解析する方法を完全に制御できますが、gdb define
コマンドを使用するとそうではありません。
奇妙なことに、私は今日別のquestionのgrep python gdb関数を書いています。これらのファイルは、コールスタックに_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ここ
# 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
ためのスクリプトはPythonのファイルであります