디버깅은 런타임에 코드의 객체 및 변수 상태를 검사하는 데 매우 유용한 도구입니다.
위의 답변에서 앞에서 언급했듯이 디버깅은 매우 유용하지만 제한적인 경우가 있습니다.
내 경험상 디버거를 사용하면 코드 상태에 대한 잘못된 가정을 밝히는 데 도움이되므로 매우 유용합니다. 어떤 사람들은 버그를 찾기 위해 코드를 읽는 것에 익숙하지 않으므로 디버깅은 사용자 또는 다른 개발자가 코드 상태에 대해 잘못된 가정을 밝히는 데 도움이 될 수 있습니다.
메소드에 전달 될 때 매개 변수가 널이되지 않을 것으로 예상 할 수 있으므로 해당 케이스를 확인하지 않고 해당 매개 변수가 널이 아닌 것처럼 메소드를 계속 수행하지 마십시오. 실제로는 매개 변수 가 null이 아니어야한다는 메서드의 전제 조건으로 설정하더라도 매개 변수 가 어느 시점에서 null이됩니다. 항상 일어날 것입니다.
앞에서 언급 한 예제에서 디버거의 유용성과는 달리, 멀티 스레딩 (즉, 동시성, 비동기 처리)이 포함되는 경우 사용하기 어렵고 다소 유용하지 않습니다. 도움이 될 수 있지만 디버거의 중단 점이 지점 A의 한 스레드에서 지점 B의 완전히 분리 된 스레드에 도달하면 멀티 스레드 포그에서 방향을 잃기 쉽습니다. 개발자는 새로운 중단 점 " 생각 과정 "을 그의 두뇌의"스택 "위에 놓고 새로운 중단 점의 시점에서 코드에 자신을 향하게합니다. 중단 점 B의 관련성이 감소한 후 개발자는 첫 번째 중단 점으로 다시 전환하여 중단 점 B가 트리거되기 전에 자신이 찾고 있던 것을 기억해야합니다. 혼란스러운 설명 일 수 있음을 알고 있습니다.
또한 동시 코드의 예측 불가능 성은 개발자가 동시 코드를 디버깅하는 데 방해가 될 수 있습니다.
결론적으로, 나의 솔직한 의견으로는 :
- 동시성 사용시 디버깅 = "디버깅 사고 패턴"의 초점을 잃는 경향 증가
과
- 언제든 = 디버깅 생산성 향상 b / c는 경쟁 조건으로 인해 예기치 않은 중단 점으로 인해주의가 중단되지 않습니다.