在尝试回答另一个问题时,我尝试设置一个 Python 脚本来自动提取程序集执行跟踪。但是,我真的对这个脚本不满意,我想知道如何改进它。
首先,这是脚本:
import gdb
gdb.execute('break main')
gdb.execute('run')
while (True):
gdb.write (gdb.execute('x /i $pc', to_string=True).rstrip('\n'), gdb.STDOUT)
gdb.execute('stepi', to_string=False)
gdb.flush ()
然后,只需执行:
$> gdb -x ./script.py ./main 1> log.txt
我想解决的问题如下:
首先,
while(True)
肯定是不尽如人意的。当达到断点或退出时,我想停止或暂停循环。此外,我们将指令列表导出到外部的
gdb
方式也不是很令人满意。将其保存到文件比必须重定向stdout
到文件要好得多。最后,能够与软件进行交互,通过它来馈送
stdin
也是我们想要的。
因此,如果您知道如何以任何方式改进此脚本,我会很感兴趣。