2017-05-23 13 views
2

나는 웹 애플리케이션 방화벽에 새로 온 사람과 할 내가 자주 사용하는 트릭을하는 GNU에 아날로그를 구현하려고합니다.

waf에 대한 GDB 작업을 작성했으며이를 사용하는 기능인 GDB 작업을 작성하여 최상위 명령에 연결했습니다. 하지만 GDB에서 입출력을 볼 수는 없습니다. 그것은 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를 게시하여 문제를 재현 할 수 있습니까? 이 파이썬 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 및 파이썬 2.7.6로 테스트)

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

+0

굉장합니다, 고마워요! –