2014년 8월 현재, Cygwin으로 systrace를 사용하려고 하면 zlib 관련한 error가 나면서 동작하지 않는다.
$ python systrace.py -o output.html gfx input view wm am video hal dalvik capturing trace... done downloading trace... done Traceback (most recent call last): File "systrace.py", line 286, in <module> main() File "systrace.py", line 231, in main decoded_chunk = dec.decompress(chunk) zlib.error: Error -3 while decompressing: incorrect header check
AOSP project의 이 링크에 보면 문제를 해결하기 위한 patch가 올려져 있는데 comment를 보니 한동안 받아들여 지지 않다가 현재 source와 달라져서 적용할 수 없게 된 모양이다. 같은 동작을 하도록 약간만 수정해서 이렇게 고쳐 보니 좀 지저분하긴 해도 zlib error 없이 Cygwin에서 systrace를 사용할 수 있었다.
diff --git a/systrace.py b/systrace.py index 387f413..0d3be25 100644 --- a/systrace.py +++ b/systrace.py @@ -205,8 +205,12 @@ def main(): data = ''.join(data) # Collapse CRLFs that are added by adb shell. - if data.startswith('\r\n'): - data = data.replace('\r\n', '\n') + if sys.platform == 'cygwin': + if data.startswith('\r\r\n'): + data = data.replace('\r\r\n', '\n') + else: + if data.startswith('\r\n'): + data = data.replace('\r\n', '\n') # Skip the initial newline. data = data[1:]