2009-02-06 4 views
13

누구도 실제로 reversable 디버거를 사용 했습니까? Google이 나타나는 유일한 제품은 UndoDB입니다. 그것은 분명히 리눅스 전용입니다.양방향 (또는 역방향) 디버깅

+1

도구 rec로 닫거나 명확하지 않은 투표. 또한보십시오 : http://stackoverflow.com/questions/1545474/anyone-tried-reverse-debugging-in-gdb, http://stackoverflow.com/questions/1470434/how-does-reverse-debugging-work –

답변

8

(금주 발표) 최신 GDB 버전 7.0 플랫폼의 수에 역 디버깅을 지원합니다 (예를 들어, 기본 I386 및 x86_64의 리눅스, VM웨어 워크 스테이션, UndoDB 및 Simics 시뮬레이터를 Virtutech에서 제공합니다. ftp://ftp.gnu.org/pub/gdb

Visual Studio 디버거를 사용하는 MSWindows 게스트의 역 디버깅을 지원하는 VMware 워크 스테이션 7.0의 최신 미리보기/사전 릴리스와 함께 작동합니다. http://communities.vmware.com/community/beta/workstation에서 워크 스테이션 7.0의 무료 평가판 다운로드 및 유용한 유용한 팁을 찾으십시오. http://communities.vmware.com/docs/DOC-10714

4

찾고있는 단어가 "전염성이있는 디버깅"일 수 있습니다. 여기

은 하나입니다 http://www.lambdacs.com/debugger/

UndoDB 페이지 (비싼) 상용 디버거에 대한 몇 가지 링크가 있습니다.

3

VS 2010에는 이와 비슷한 것이 있다고 생각됩니다.

5

새로 출시 된 gdb-7.0에는 기본 Linux x86 및 x86_64에 대한 역 디버깅 기능이 포함되어 있습니다. 평소처럼 모든 리눅스 프로그램을 디버깅 할 수 있고, "녹음"기능을 켜고 그 지점에서 앞으로 너무 멀리 앞으로 나아갈 경우, 뒤로 또는 뒤로 건너 뛰어 중단 점을 계속할 수 있습니다.

2

그래, 나는 90 번째로 그것을 사용했습니다. Watcom C Debugger (FORTRAN과 대부분의 다른 언어들도 이해할 수 있습니다)는 당신이 앞으로 나아갈 수있게 해주는 옵션을 가지고 있습니다. 2005 년부터

그것은 중대하다,하지만 큰 새로운 일이 ... 역에

5

즐거운 역사적 기록으로, EXDAMS는 60 년대 후반에 MULTICS에 대한 사후 부작용 디버깅을 구현했습니다.

3

이 질문은 오래된 것이지만 은 흥미로운 주제로 남아 있으므로 업데이트 된 답변을 게시 할 것입니다. 내 논문, Combining reverse debugging and live programming towards visual thinking in computer programming는, 역사적 접근 방법의 일부를 포함하고, 전지전능 디버깅 진정한 역 디버깅의 차이에 대해 설명합니다

컴퓨터, 어떤 시점에 프로그램을 앞으로 실행하는 데, 정말 제공 할 수 있어야합니다을 우리에게 그것에 관한 정보가 있습니다. 이러한 개선이 가능하며, 전천후 디버거 (omniscient debugger)에서 발견됩니다.이들은 일반적으로 역 디버거로 분류되지만보다 정확하게는 "히스토리 로깅"디버거라고 기술 할 수 있습니다. 실행중인 프로그램에서 실제로 프로그래머가 거꾸로 단계를 진행할 수 있도록하기보다는 실행 중에 정보를 기록하기 때문에 나중에 보거나 쿼리합니다 . "전 일성"은 기록 된 프로그램의 전체 상태 기록이 실행 후 디버거에서 사용할 수 있다는 사실에서 비롯됩니다. 프로그램을 재실행 할 필요가 없으며 수동 코드 계측이 필요 없습니다.

소프트웨어 기반의 전체 디버깅은 "디버그 시간 기록 재생"이라고 불리는 1969 EXDAMS 시스템에서 시작되었습니다. GNU 디버거 인 GDB는 'process record and replay'기능을 갖춘 2009 년 이후로 전체적인 디버깅을 지원했습니다. TotalView, UndoDB 및 Chronon은 현재 사용할 수있는 가장 우수한 모든 디버거이지만 상용 시스템입니다. Java 용 TOD는 부분 결정적 재생 및 부분 추적 캡처와 관련된 대량의 정보를 기록 할 수있는 분산 데이터베이스를 사용하는 최고의 오픈 소스 대안 인 것으로 보입니다.

기록을 탐색 할 수있을뿐만 아니라 실제로 실행 시간에 뒤로 물러 설 수있는 디버거도 있습니다. 다시 말해, Back-In-Time, Time-Travel, 양방향 또는 역방향 디버거로 더 정확하게 설명 될 수 있습니다.

최초의 시스템

은 ... 1981 년 프로토 타입을 COPE 나는 모든 디버깅 세션에 대한 일반 gdb를 대신 리눅스에 UndoDB을 사용하고

+0

내 gdb의 문제점은 멀티 스레드 응용 프로그램의 역 디버깅을 허용하지 않는다는 것입니다. 여기서 비 - 시동기. – casualcoder

+0

@casualcoder, 잘 모르겠지만, gdb가 잘 보이지는 않습니다. [대답은 여기에 있습니다.] (http://stackoverflow.com/questions/7517236/how-do-i-enable-reverse- 디버깅 - 온 - 멀티 스레드 프로그램) – Abraham

+1

글쎄, 4 년 전 게시. 다중 스레드 응용 프로그램이 지원됩니다! – casualcoder

1

했다. 역 디버깅은 매우 유용하며 디버깅 속도를 크게 높입니다. 문제의 증상 (예 : 어설 션 오류 또는 잘못된 메시지가 인쇄 됨)에서 디버깅을 시작하고 문제의 근본 원인을 찾아 제 시간에 거꾸로 디버그 할 수 있습니다.

+0

Gdb는 몇 년 동안 역 디버깅을위한'process record'를 가지고 있습니다. 최근의 Debian/Ubuntu/glibc에는 glibc이 항상 문자열 조작에 AVX2를 사용하려고하고 gdb 프로세스 레코드에는 vex 접두어가 붙은 명령을 에뮬레이트 할 수없는 AVX2 가능 CPU가있는 경우에만 문제가 있습니다. ld.so에서 AVX2 사용을 비활성화하는 kludge 1 비트 바이너리 패치가 있습니다. https://stackoverflow.com/questions/43750603/gdb-reverse-debugging-avx2/44468782#44468782 https://stackoverflow.com/questions/ 42451492/disable-avx-optimized-functions-in-glibc-ld-hwcap-mask-etc-ld-so-nohwcap-for/44468494 # 44468494 – osgx

+0

코어 및 도구에 대한 귀하와 귀하의 회사에 감사 드리며 사이트에 오신 것을 환영합니다! 그리고 위키 피 디아 기여도. – osgx

+0

전체 서클에 왔습니까? UndoDB에 대해 언급하면서이 질문을 제기했습니다. gdb에서 역 디버깅에 대한 한 가지 불만은 히스토리 로그가 매우 짧다는 것입니다. 하나는 로깅을 다시 시작하라는 메시지가 표시됩니다. 그래도 최신 gdb를 사용해 봐야 할 것입니다. 희망을 갖고. – casualcoder