我是waf的新手并尝试将模拟实现为我经常使用的GNU make技巧:
gdb: application.elf
gdb -x gdbinit-debug $<
也就是说,允许'make gdb'启动交互式GDB会话以进行调试。
我为waf编写了一个GDB任务,这是一个使用它的功能,并将其连接到顶级命令。但我没有看到GDB中的任何I / O.根据{{1}},它正在运行,但似乎不允许我一起玩。
有没有办法在waf中实现这个目标?
编辑:这是脚本的相关部分,我想:
ps
它工作正常,但如果我关闭class gdb_task(Task):
def run(self):
cmd = [ self.env.GDB, '--silent', '--batch' ]
for script in self.inputs[:-1]:
cmd.extend(['-x', script.abspath()])
cmd.append(self.inputs[-1].abspath())
return self.exec_command(cmd)
color = 'CYAN'
def runnable_status(self):
return RUN_ME
def keyword(self):
return 'GDB'
def __str__(self):
node = self.inputs[-1]
return node.path_from(node.ctx.launch_node())
,它只会在运行时挂起而没有输出。
答案 0 :(得分:2)
您要做的是添加
from sys import stderr,stdout
然后替换
return self.exec_command(cmd)
与
return self.exec_command(cmd,stdout=stdout,stderr=stderr)
(使用Waf 1.9.11和Python 2.7.6测试)