2008-10-21 3 views
1

IDE vb 6 디버거에서 똑같은 변수를 사용하여 똑같은 프로세스를 실행할 때와 비교하여 'Make .exe'를 사용했을 때의 결과를 비교합니다.Vb 6 .exe 다른 결과를 디버거로 만들기

다른 컴파일러 옵션 배열을 시도했지만 아무 소용이 없습니다.

그래서 내 질문은 왜 디버거와 'Make .exe'가 다른가요? 아로 스트와 비슷한 것을 경험해 본 적이 있습니까? 그렇다면 수정 사항을 찾으셨습니까?

프로그램은 시간대별로 자동차 대용량 파일을 가져 와서 각 경로의 한 달 동안 하루 평균 15 분의 시간대로 평균화합니다. 표준 편차 및 기타 통계 알고리즘 외부에 있는지 여부에 따라 특정 레코드를 삭제합니다. 값을 제거하려면 다음을 수행하십시오. 많은 코드의 약간

+0

그것의 매우 명확하지 (다른 프로세스에 뒤에 실행)에서 직접 발생 ... – Jan

+0

나는 더 명확하게하려고 노력할 것이다. 그러나 근본적으로 그것 "왜 내가 디버거와 'Make .exe'의 차이점을 얻었 을까?" – Hath

+0

진정한 질문은 어떤 결과가 정확합니까? 디버거 버전 또는 프로덕션 버전의 결과입니까? 프로덕션 버전이 맞다면 디버거를 사용하여 디버그 버전이 잘못된 결과를 생성하는시기를 확인하십시오. 그것은 당신의 문제를 정확하게 지적해야합니다. –

답변

3

Debug.AssertDebug.Print 문은 바이너리로 컴파일되지 않습니다 ... 불행하게도 게시합니다. 가끔 내가 IDE 또는 컴파일 된 바이너리에서 오전 여부를 감지하려면이 옵션을 사용

는이 같은 진술에주의 :이 명령문이 실행되지 않습니다 컴파일 된 버전에서

Debug.Assert(DoSomeThingImportend()) 

.

+0

Debug.Assert 및 Debug.Print 문이 코드에 없습니다. (필자는 디버깅에 도움이되는 코드를 가졌으므로이 코드를 추가 했으므로이 테스트를 위해 주석을 달았습니다.) – Hath

0

일부 경우 (매우 드문 경우)에는 VB6 용으로 컴파일 된 코드와 디버그 코드가 다를 수 있다는 것을 알게되었습니다.

'Compile to P-Code'옵션을 시도해보십시오. 때로는 네이티브 코드와 약간 다른 결과가 나타납니다. Project Properties/Compile 탭에서 찾을 수 있습니다.

알고리즘을 게시하면 더 많은 가능성을 발견 할 수 있습니다.

편집 : 알고리즘을 게시 할 수 없으므로 점진적으로 알고리즘을 깨고 정확히 차이점이있는 부분을 찾으려고합니다.

+0

P- 코드로 컴파일을 시도했지만 여전히 테스트 케이스에 차이가 있습니다 . 코드를 게시하는 것은 가능하지 않을 수 있습니다 .. 그 꽤 큰 .. 내 상사가 달에 대해 없을 수도 있습니다. 고마워요. – Hath

0

VB 6은 컴파일 일관성 측면에서 매우 견고합니다. 그러나 한 가지 가능성은 사건에 어떤 방식으로도 의지하고 항복하기 위해 행동을 사용하는 경우 일 수 있습니다.

이 조합은 IDE와 컴파일 된 코드에서 매우 다르게 동작 할 수 있습니다.

나는 당신이 아니 겠지만, 확인해야 할 것이 있습니다.

0
는, 디버그 버전이 약간 느린 타이밍 문제에서 오는 컴파일 된 디버그 버전 사이의 시간 차이의 대부분이다

일부 그렇지 않은 경우 초기화 값을 놓칠 수도 있고, 완성되는 과정의 다른 부분에 대해 충분히 기다릴 나던

코드 부분 사이에 약간의 일시 중지를 추가하여 테스트 할 수 있습니다. DoEvent가 트릭을 수행하거나 msgbox를 팝업으로 표시 할 수 있습니다 (디버그 버전으로 컴파일 된 버전의 중간 결과를 비교할 수도 있음)

계산의 어느 부분에서 잘못된 결과가 나오는지 확인하고 그 부분을 분리하여 분리하십시오 전자 기능

는 종종 차이는 시작 (시간이 없어 초기화), 또는 어딘가에 끝까지 과정에서 귀하의 질문에 대해 무엇