2017-05-23 7 views
2

私はWAFに新たなんだと私は頻繁に使用するトリック作るGNUにアナログを実装しよう:対話型コマンドを実行できますか?

gdb: application.elf 
    gdb -x gdbinit-debug $< 

デバッグのための対話型GDBセッションを起動するには「GDBを作る」ことができ、あります。

私はwafのGDBタスクを使用しました。これは、それを使用する機能であり、トップレベルのコマンドにフックされています。しかし、私はGDBからのI/Oを見ていません。それはpsによると実行されていますが、私は一緒に遊ぶことを許可されていないようです。

これをwafで実行する方法はありますか?

編集:ここでは、スクリプトの関連部分だ、私は思う:それは正常に動作しますが、私はオフ--batchを取るならば、それはちょうどその時、実行出力なしでハング

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

waf wscriptを投稿して問題を再現できますか?このpython one-linerは私のために働きます: 'python -c 'import subprocess; subprocess.call(["gdb"、 "a.out"]) '。' – ks1322

+0

私はほとんどwafがsubprocess.callを使用していないと確信しています。私はそれがI/Oストリームを消費しているに違いないと思う。 –

答えて

2

from sys import stderr,stdout 

を追加して置き換えるです

return self.exec_command(cmd) 

(Wafの1.9.11とPython 2.7.6で動作確認済み)

return self.exec_command(cmd,stdout=stdout,stderr=stderr) 

+0

素晴らしいです、ありがとう! –

関連する問題