문제

델파이,2009 년 나의 프로그램으로 이제 생산"목록 색인이 범위를 벗어"오류가 있습니다.생성하는 팝업창이 나타납:

alt text
(출처: beholdgenealogy.com)

내가 사용하여 디버그""구성하는 모든 런타임 오류 검사 켜져 있습니다.그러나 이지 않는 오류를 캡처하기 전에 발생합니다.

어떤 간단한 방법으로 원본을 찾는 이에 오류가 나의 프로그램을 다운로 중단점과 좁은 그것에 의해 아래로 시험과 오류?

도움이 되었습니까?

해결책

"델파이 예외 중지"가 켜졌습니까? (도구 디버거 옵션 언어 예외 [delphi7]) 그렇지 않으면 sourcecode에서 깨지지 않습니다.

또한 Elisterror가 "예외 유형을 무시할 예외"목록에 있지 않은지 확인하십시오. 이 목록은 도구 debugger 옵션 언어 예외 (Delphi 7)에서도 찾을 수 있습니다.

다른 팁

madExcept (무료)또는 EurekaLog (유료)데 도움이 될 수 있습니다.당신은 설정할 수 있습니다 그들을 보여/이메일 스택 추적할 때 오류가 발생합니다.내가 사용하는 EurekaLog 내 모든 프로젝트에서 그것은 소중한 수정을 위한 종류의 물건입니다.

이를 추적하기 위해 추가 도구가 필요하지 않습니다! :)

디버거 아래에서 애플리케이션을 실행하고 "델파이 예외에서 중지"(또는 델파이 버전에서 호출되는 것이 무엇이든) 회전하는지 확인하십시오. 켜짐.

예외가 발생하면 디버거로부터 알림이 있습니다. "OK"/"Debug"버튼을 누르고 통화 스택을보십시오. Call Stack Window는 최근 Delphi 버전에 자동으로 표시됩니다. 볼 수없는 경우 "보기"/"디버그 Windows"/"Call Stack"으로 이동하십시오.

그게 다야. 통화 스택은 문제의 정확한 위치를 가리 킵니다.. 추가 도구가 필요하지 않습니다.

사용자에게 프로그램을 배포하고 클라이언트 측에서 문제에 대한 버그 보고서를 수집하려는 경우 이러한 도구 (Eurekalog, JCL 또는 Madexcept)가 필요합니다. 즉 문제를 확인할 디버거가 없습니다.

이것은 RTL/VCL 오류이므로 DCU 디버그 (및 재건)를 활성화하면 종종 더 나은 브레이킹/콜 스택 동작으로 끝납니다.

이런 일이 발생할 때 응용 프로그램이 무엇을하는지 힌트가 있습니까? 긴 루프? 버튼 클릭?

응용 프로그램이 중단되고 통화 스택 디버그 창을 보면 코드에서 마지막 통화로 통화를 추적 할 수 있습니까? 통화 스택은 모든 조건을 알려주지 않지만 위치를 좁힐 수 있습니다.

통화를 좁히면 로깅 도구가 코드 사이트 정말 유용 할 수 있습니다. 예를 들어, 루프 제어 변수를 기록하여 오류가 발생하기 전에 어떤 반복이 발생하는지 알아 내면 의심스러운 용의자를 식별하는 문제입니다.

ListBox의 경우, tstrings는 ... 인덱스가 List-> count를 넘어서는 것을 의미합니다. . tstring-> strnigs의 예 [?]; [?]는 <0 또는> (tstring-> count-1)는 경계 오류가 발생하지 않습니다.

NMPOP3 등의 경우 ... POP3CLIENT를 사용하여 이메일을 가져 오면 일부 unix/에 버그가 있습니까? POP3 서버, 나는 그것을 사용하여 Mail에서 이메일을 가져 왔지만 일부는 괜찮습니다.

마침내 나는 tnmpop3 대신 tclientsocket으로 pop3client 응용 프로그램을 다시 작성해야합니다. 이제 내가 연결된 모든 POP3SERVER와 함께 작동합니다.

이 도움과 행운을 빕니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top