2014-12-29 2 views
-1

발생하는 모든 변경 사항을 기록하기 위해 프로세스의 메모리를 지속적으로 덤프 할 수 있습니까? 예를 들어 배열의 내용을 수정하는 프로그램이 있다면 수정하기 전에 그 배열의 내용을 알고 싶습니다. 프로그램이 초기 메모리를 저장 한 다음 파일의 모든 변경 사항을 저장할 수 있다고 가정하고 필자가 알고있는 배열의 수정 된 내용으로 파일을 검색합니다. 그런 다음 그 특정 메모리 위치의 변경 사항을 그 순간 이전에 찾아서 초기 내용을 찾습니다. 그런 프로그램이 있습니까? 그렇다면 어떤 프로그램을 추천 하시겠습니까?상수 메모리 덤프

EDIT : 저는 pcap을 사용하여 다른 프로세스의 패킷을 캡처하는 프로그램을 작성했으며,이 패킷이 프로그램 내부에서 어떻게 생성되는지 알고 싶습니다. Windows를 사용하고 있습니다.

+0

당신이 염두에두고 구체적인 어떤 응용 프로그램 설명해주십시오. –

+1

에 '액션 재생'이 필요합니다. http://en.wikipedia.org/wiki/Action_Replay –

답변

0

메모리 내용이 디스크가 기록 할 수있는 것보다 훨씬 빠르게 변화하고 있음을 알 수 있습니다.

또한 질문은 OS에 따라 다릅니다. 나는 당신이 리눅스를 사용하고 있다고 생각한다.

모든 경우에 목표를 매우 빨리 응용 프로그램을 디자인하십시오.

아마도 당신은 application checkpointing을 찾고 있습니다. Linux의 경우 BLCR을 고려하십시오.

아마 persistence 메커니즘을 찾고 있습니다. 가능한 한 자주 실행되는 프로그램의 일부 지점에서 응용 프로그램의 상태를 명시 적으로 유지하는 방법이있을 수 있습니다. call stack 또는 continuations의 지속성 당신은 serialization에 대한 텍스트 형식을 (같은 JSON) 사용할 수 있습니다 어려운 문제

입니다. 당신은 어느 관계형-SQL (예를 들어, Sqlite 또는 PostGreSQL) 또는 NoSQL에 mongodb

지속성 데이터베이스 기술에 관심이있을 수 있으며, 체크 포인트는 garbage collection 알고리즘 (특히 GC를 복사)과 관련이있을 수 있습니다.

일부 언어 구현은 전체 힙을 유지할 수 있습니다. 예를 들어, Common Lisp에서 SBCL 구현은 watchpoints, 또는 gcore(1) 명령을 할 수 있습니다, 디버깅을위한 save-lisp-and-die

제공합니다.

fork(2) 프로세스와 잠자기 또는 유휴 상태 인 경우 즉시 해당 하위 프로세스에 보관중인 하위 프로세스가 주소 공간의 스냅 샷을 처리합니다.

읽기는 약 transactional memory & ACID properties