我可以运行交互式命令吗?

时间:2017-05-23 17:46:14

标签: python makefile gdb waf

我是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()) ,它只会在运行时挂起而没有输出。

1 个答案:

答案 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测试)