我想使用python脚本在gdb提示符中执行linux命令(例如.bt,break,frame等)。
例如:我正在使用subprocess.call(["gdb"], shell=True)
这行通过执行gdb命令将我带到(gdb)提示符,但在我尝试之后
subprocess.call(["backtrace"], shell=True)
它显示/ bin / sh:backtrace:命令未找到
答案 0 :(得分:2)
backtrace
不是linux命令,它是gdb
命令。
如果你想将命令发送到popen'dg会话,你必须通过stdin
推送它们,比如......
import subprocess
gdb = subprocess.Popen(['gdb'], stdin=subprocess.PIPE)
gdb.stdin.write('backtrace\n')
答案 1 :(得分:2)
您在{{1>}提示中输入的命令,如回溯,中断,框架等,都是gdb命令。只有gdb知道如何解释它们,它们不能与(gdb)
一起使用,因为后者只能运行Linux可执行文件。
有两种方法可以达到你想要的效果:
subprocess.call()
。另请参阅https://bitbucket.org/minami/python-gdb-mi/src/tip/gdbmi/session.py?at=default 将此项保存到 t.py
p = subprocess.Popen(['gdb', '-i=mi'], stdin=fd_in, stdout=fd_out)
然后运行:
import gdb
gdb.execute('set confirm off')
gdb.execute('file /bin/true')
gdb.execute('start')
gdb.execute('backtrace')
gdb.execute('quit')