2009-05-13 3 views
5

때로는 코드의 다른 위치에있는 여러 디버깅 세션에서 많은 수의 중단 점이 누적됩니다. 디버거가 중단 점을 중지 할 때를 효율적으로 어떻게 알 수 있습니까? 줄 번호와 소스 파일 이름을 잠재적으로 긴 중단 점 목록과 비교하기 위해 모든 단일 행에서 멈출 수는 없습니다.디버거 중단 점은 어떻게 효율적으로 구현됩니까?

이것은 Eclipse의 Java 디버거이지만 모든 디버거에는이 질문이 적용된다고 가정합니다.

답변

7

많은 디버거에서 사용되는 전략 (필자는 Eclipse에 대해 잘 모른다)은 기본적으로 서브 루틴 호출 또는 시스템 호출 인 중단 점 시점의 코드에 패치를 넣는 것입니다. 에 점프 한 코드는 중단 점 정보를 가지며 사용자 명령의 인쇄 또는 수락을 수행하며 패치로 덮어 쓰여진 코드를 가지므로 코드가 실행되어 중단 점없이 원래 코드와 일치하도록합니다.

+0

맨 아래 링크에서 하나를 작성하는 방법의 자세한 내용을 얻을 수 있습니다, 그것은 일부 대형 마법입니다. 디버거가 깊은 일을하고 있다는 것을 알았지 만, 깊은 생각은하지 못했습니다! – skiphoppy

+2

반드시 전화가 필요한 것은 아닙니다. 가능한 경우 디버거가 처리하는 인터럽트를 발생시키는 명령으로 덮어 씁니다. –

5

는 Nadreck의 좋은 답변에 추가하려면 :

는 이국적인 물건의 일부를 포함하여 자세한 내용과 기사 here있다 (x86에서 특정 옵 코드, 하드웨어 브레이크 포인트).

2

디버거는 하드웨어 또는 소프트웨어로 중단 점을 구현합니다. 후자는 원래 명령어를 저장하고 예외를 생성하는 특수 코드를 삽입하며 예외가 발생하면 원래 명령어를 다시 삽입하여 브레이크 포인트가 히트되었음을 ​​사용자에게 알려야합니다. 소프트웨어 중단 점에 대한 자세한 내용은 my article을 참조하십시오.

관련 문제