프로그램을 성공적으로 빌드했으며 잠시 동안 실행할 수 있습니다. 그런 다음 어느 시점에서 항상 충돌합니다. 프로그래밍에 익숙하지 않고 Visual Studio에서 알고있는 유일한 도구는 호출 스택을 사용하여 호출 할 함수를 추적하는 것입니다. 그러나 어떤 예외가 보이지 않거나 어설 션이 발생하지 않았기 때문에 어떤 함수가 실제로 문제를 일으켰는지 확인할 수 없습니다. 가능한 솔루션 또는 관련 자습서에 대한 지침에 대한 제안은 크게 감사하겠습니다.프로그램이 충돌하는 위치를 정확하게 지정하는 방법
답변
디버그 도구를 사용해 보셨습니까?
코드 왼쪽 (줄 번호 왼쪽)을 클릭하십시오. 빨간색 점이 나타납니다. 그런 다음 play (debug 옵션 사용)를 누르면 프로그램이 단계별로 수행하는 작업을 볼 수 있습니다.
오류가 발생하면 오류 코드가 출력됩니다. 그것이 무엇을 의미하는지 알아보십시오.
디버깅 훌륭한 도구입니다, 당신은 당신의 프로그램이 단계별로 진행 정확하게 볼이 충돌 위치를 확인할 수 있습니다.
이뿐만 아니라 기본적인있을 수 있습니다,하지만 난 실패 위치를 확인하기 위해 코드에 점진적으로 COUT 문을 추가 건의 할 것입니다. 당신이 배울해야합니다우선 충돌이 원인, 그것이 나타 점을 가지고 있다는 것입니다. 그것들은 대개 동일하지 않습니다. 예를 들어 널 포인터를 역 참조하는 경우 충돌이 발생할 수 있습니다 (확실히 Visual Studio에서). 그러나 원인은 대개 일찍 검사해야합니다. 유사하지만 동일하지 - 충돌의
비슷한 유형이 삭제 된 포인터를 역 참조하면 경우에 발생할 수 있습니다. Visual Studio에서는 두 경우 모두 (C0000005) 액세스 위반이 발생하지만 오류 발생시 포인터가 다릅니다. 여기서 아무런 수표도 도움이되지 못했습니다. 스마트 포인터가 도움이되었을 것입니다.
강력한 도구는 클래스를 불변하는 클래스로 디자인하는 것입니다. 이 객체의 속성은 이며 항상입니다. 예를 들어 String 클래스에서 Invariant는 Size 속성이 문자열의 문자 수와 같을 것입니다. 이중 연결리스트의 경우, 순방향 및 역방향 포인터는 일관성이 있습니다. 일반적으로이 불변량은 private
데이터를 포함하며 모든 클래스 메서드는 불변성을 유지합니다. 다른 코드는 private 메소드에 접근 할 수 없으므로 invariant를 깨뜨릴 수 없습니다. 이 불변을 확인하는 (디버그) 함수를 추가하는 경우
, 당신은 객체가 여전히 유효 충돌에서 확인할 수 있습니다. 종종 단 하나의 깨진 물체가 있습니다. 그러면 버그가 private
데이터를 변경할 수있는 약간의 코드에 있어야한다는 것을 알게됩니다.
- 1. MongoId : 관계를 정확하게 지정하는 방법
- 2. 프로그램이 충돌하는 이미지의 종횡비
- 3. GPS 위치를 정확하게
- 4. URL에서 Bing의 위치를 지정하는 방법
- 5. 이메일 드롭 위치를 지정하는 방법
- 6. 보기에서 수신기의 위치를 지정하는 방법
- 7. UITableViewCell에서 UIActivityIndicatorView의 위치를 지정하는 방법
- 8. 페이지의 표 위치를 지정하는 방법
- 9. IIS7 응용 프로그램이 충돌하는 서버
- 10. 프로그램이 대기중인 위치를 찾는 방법
- 11. 설정을 사용하지 않고 모의 위치를 지정하는 방법
- 12. 플렉스에서 FileReference.browse()의 위치를 지정하는 방법
- 13. 특정 높이에서 div의 위치를 지정하는 방법
- 14. div 사이에 div 위치를 지정하는 방법
- 15. Native에 대해 vb6.exe 위치를 지정하는 방법
- 16. 경고 상자의 위치를 사용자 지정하는 방법
- 17. Rubyotion으로 ios 시뮬레이터에서 사용자 위치를 지정하는 방법
- 18. CSS로 이미지의 위치를 올바르게 지정하는 방법
- 19. Windows 탐색기를 열고 쉘에서 위치를 지정하는 방법
- 20. Entity Framework에서 데이터베이스를 찾는 위치를 지정하는 방법
- 21. 개미 - 파일 저장 위치를 지정하는 방법
- 22. 텍스트 선택 위치를 기준으로 div 위치를 지정하는 방법
- 23. Graphics3D에서 카메라 방향을 정확하게 지정하는 방법은 무엇입니까?
- 24. 이 ConcurrentModificationException이 충돌하는 위치를 찾는 방법은 무엇입니까?
- 25. PHP/MySQL 준비 문에서 문자열 필드의 기본값을 정확하게 지정하는 방법
- 26. 응용 프로그램이 동시 액세스에서 변수에 충돌하는 중
- 27. Linux의 프로그램이 충돌하는 주소를 아는 방법은 무엇입니까?
- 28. Python Tkinter 프로그램이 Entry와 충돌하는 경우
- 29. NSZombieEnabled가 응용 프로그램이 충돌하는 것을 막습니다.
- 30. 인터넷이없는 경우 응용 프로그램이 충돌하는 것을 방지합니다.
디버깅에 대해 들어 봤어? – CinCout
http://msdn.microsoft.com/en-us/library/sc65sadd.aspx – jsantander
"충돌"이란 정확히 무엇을 의미합니까? 사용자로서 작동을 멈추는 모든 것은 "추락"합니다. 그러나 프로그래머라면 더 정확하게 배우는 것이 필요합니다. 쉽게 마스터 할 수있는 스킬이 아니기 때문에 (전문가는 제한된 정보로 놀라운 것을 할 수 있습니다) 기본을 고르는 것이 필요합니다. – MSalters