2014-11-10 12 views
0

구글의 dump_syms 프로그램과 같은 symbolicated 파일을 작성하는 입력 파일 및 출력 파일이 필요합니다 완충기. 처음에 바이너리를 임시 파일에 기록한 다음 dump_syms에 피드를 보내고이 임시 소스를 삭제하면 성능이 떨어집니다.이 breakpad의 dump_syms에 파이프 바이너리 데이터에 그것을 가능

파일 시스템을 우회하기 위해 어떻게 든 이진 데이터를 dump_syms으로 파이프 할 수 있습니까? 나는 이것을하기 위해 리눅스의 원시 파이프 관점에서 아마 방법이 있어야한다고 생각한다.

dump_syms이 파이핑을 지원하는 가장 좋은 방법은 알고 있지만이 기능이 없다고 생각합니다. 이것을 고려해 볼 때, dump_syms를 수정할 수있는 팁이 있다면 파이프를 받아 들일 수 있을지도 모르겠다.

답변

1

"named pipe"을 만든 다음 이름 (파일 시스템의 경로가 됨)을 dump_syms으로 전달할 수 있습니다. dump_syms이 여전히 작동하는지 여부는 파이프가 지원하지 않는 임의 액세스가 필요할 수 있으므로 말할 수 없습니다.

다른 방법으로는 버퍼를 처음 저장할 위치를 제어 할 수 있다면 mmap 파일을 사용하여 해당 메모리 영역을 사용하여 데이터를 저장 한 다음 해당 메모리 매핑 파일의 이름을 dump_syms으로 지정하십시오.

+0

좋은 소리. 나는 다시 시도하고 논평 할 것이다. 빠른 답장을 보내 주셔서 감사합니다. – Eye

+0

결국 도움을주지는 못했지만 답변에 투표했습니다. 첫째, 명명 된 파이프는 'dump_syms'에 적합하지 않습니다. 왜냐하면 네임드 파이프의 경우에는 불가능한'mmap'을 통해 소스 파일을 메모리에 매핑해야하기 때문입니다. 둘째, Node.js의 메모리 매핑을 사용하는 것은 간단하지 않으며 작업을 차단하는 것을 의미합니다. 가능한 유일한 방법은'breakpad' 소스 코드를 직접 수정하여 파이프 된 데이터를 읽는 것입니다. – Eye

+0

@ 아이. 승인. ""미친 "최적화 된 솔루션을 별도의 실행 파일 대신 라이브러리로 필요한 기능을 얻는 것 같아요; 그러면 이미 가지고있는 메모리를 조작 할 수 있습니다. 그래도 쉬운 일은 아닙니다. –