의 정수를 저장하는 다음과 같은 코드를 살펴 있나요? 하나는 그렇지 않다고 가정합니다. 그러나, 디버거를 수행 할 수 있습니다 라인 { } // do something evil here
에 중단 점을 넣고 계속하기 전에 직접 실행 창에서 다음 명령을 실행우회 C 번호의 형 보호 및 문자열
((object[])myArray)[0] = 99;
s = myArray[0];
실행이 계속 This should not happen
가 인쇄됩니다. Visual Studio 2008에서 테스트되었습니다.
디버거에서만 가능 속임수의 종류 또는 코드에서와 같은 "안전하지 않은 과제"를 할 수있는 몇 가지 방법이 있습니다 : 여기에 스크린 샷은 무엇입니까?
는 (물론, 나는 단지 과학적인 호기심. This question에서 요청과 관련된 의견은 나에게이 질문을했다.)
"디버거가 누가 디버그합니까?"질문 중 하나라고 생각합니다. VS 디버거에서 버그를 발견했다고 생각합니다. – dasblinkenlight
매우 흥미로운 주제이지만,이 질문은 귀하가 링크 한 질문과 중복되는 것이 아닙니다. –
규칙을 깨뜨릴 수 있다는 것은 디버거의 핵심입니다. 임의로 코드 실행 순서를 변경하고, 스레드를 고정 시키며, 문자열을 변경하고, GC 힙에서 바이트를 직접 가져올 수 있습니다. 물론 코드에서이 작업을 수행 할 수 있으므로 포인터로 원하는 것을 뽑을 수 있습니다. 단지별로 유용하지 않습니다. –