2009-02-05 2 views
1

저는 VB6에 익숙하지 않지만 현재 폼, 클래스, 모듈 및 타사 도구가 많은 도구와 같은 편집기의 공포를 유지 관리하고 있습니다. 텍사스의 전기 톱 학살에서 그 사람의 얼굴이 피부처럼 뭉개져 있습니다. ...Dev Machine 대 설치된 VB6 app 테스트 결과의 차이점은 무엇입니까?

내가 이해하지 못하는 이유는 디버깅 모드에서 앱을 실행할 때와 다른 컴퓨터에 설치했을 때 내 devevelopment pc에서 실행했을 때의 결과를 비교했을 때 다른 결과를 얻는 이유입니다.

네, 저도 바보 같기 때문에이 부분에 대해 자세히 알아보십시오. 나는 다른 연결, 레지스트리 관련 등의 연결을 찾아 내기를 원합니다. 즉, 지금 당장은 왁스와 같은 것을 얻지 못하고 있습니다. P

목의 주요 고통은 ' 내 품질 보증에서 몇 가지 오류를 디버깅하려고 노력하고 여분의 PC를 찾을 필요가 플러스에 내가 직접적으로 디버깅 할 수없는 이유는 내가 그 방식으로 코드가 어디에 있는지 모르겠다.

감사합니다.

+0

관련 질문 : [VB6. 디버거와 다른 결과 만들기] (http://stackoverflow.com/questions/221502/vb-6-make-exe-different-results-to-debugger/221622#221622) – dummy

답변

2

나는 내가 그것을 컴파일 할 때 대 디버깅 모드에서 응용 프로그램을 실행하고 당신은 네이티브 코드 또는 PCODE로 컴파일 할 수있는 옵션이 컴파일 할 때 내 devevelopment PC를

에서 실행합니다. 디버거는 pcode만을 사용하여 실행됩니다. 드문 경우이지만 네이티브 코드로 컴파일하면 동작이 변경됩니다. 이것은 특히 드문 경우입니다. 출시 이후 VB6을 사용했고 일 년에 한 두 번받을 수 있습니다. 내 응용 프로그램은 복잡한 CAD/CAM을 사용하여 모양을 만들고 금속 절단 기계를 실행하며 24 개의 DLL이 있습니다. 전형적인 상황이 아닙니다. 집에서 나의 취미 소프트웨어와 나는 결코이 문제를 만났다.

이벤트 순서 지정 문제점으로 인한 또 다른 클래스의 오류가 있습니다. VB6은 진정으로 멀티 태스킹이 아니지만 현재 코드 블록에서 뛰어 나와 이벤트를 처리 할 수 ​​있습니다. 새로운 이벤트에 대해 동일한 블록을 다시 입력하면 재미있는 일이 발생할 수 있습니다. 소프트웨어가 고도로 상호 작용하는 유형의 편집기 인 경우이 문제가 발생할 가능성이 큰 소스라고 생각합니다.

일반적으로 문제는 영향을받은 영역을 재정렬함으로써 해결됩니다. MsgBox를 삽입하거나 영향을받은 영역을 찾으려면 텍스트 파일에 기록하여 현재 위치를 기록하십시오. MsgBox는 타이밍 또는 멀티 태스킹 관련 동작을 변경하는 경향이 있으므로 텍스트 파일에 로깅하는 것이 좋습니다.

코드 블록 중간에 VB6이있는 동안 이벤트가 발생하면 주변에 DoEvents가 떠 다니는 것을 기억하십시오. 코드 블록이 이벤트를 처리하고 원래 코드 블록으로 돌아갈 것입니다. 동일한 코드 블록을 다시 입력하면이 문제가 발생하지 않는다고해서 문제가 발생합니다. 타이밍이 다르기 때문에 컴퓨터마다 다른 문제가 발생할 것입니다.

이 유형의 문제를 처리하는 가장 쉬운 방법은 플래그 변수를 만드는 것입니다. 멀티 태스킹에서는 세마포어 또는 뮤텍스라고합니다. 코드의 중요한 부분을 입력하면 사실을 설정합니다. 당신이 루틴을 떠날 때 당신은 그것을 거짓으로 설정합니다. 코드 섹션에 들어갔을 때 이미 사실이라면 실행하지 않습니다.

다른 PC에 설치했을 때.

이는 일반적으로 잘못된 DLL이 설치된 결과입니다. 타겟이 새로운 버전 인 동안 가장 오래된 버전 일 가능성이 큽니다. 무료 가상 PC를 다운로드하고이를 확인하기 위해 Windows XP를 새로 설치하십시오.

문제가 이벤트 타이밍 인 경우 다른 컴퓨터에서도 다를 수 있습니다. 이는 의심되는 영역 (MsgBox 아님)을 로깅하여 발견됩니다.

스크린 샷이나 특정 오류의 텍스트를 표시 할 수 있다면 더 잘 할 수 있습니다.

+0

@RS 덕분에 지금은 아무 것도 없지만 꽤 많이 겪었고 갈고리로 내 마음을 여는 때가되었습니다. 또는 사기꾼. – melaos

0

확인해야 할 첫 번째 사항은 VB6 DLL의 서비스 팩 버전을 포함하여 앱이 의존하는 모든 dll의 버전입니다.

다르게 행동하는 것에 대한 자세한 내용을 알고 싶습니까?

+0

일부는 내가 자주 내 dev에 PC를 종료 할 수있는 것처럼 출구 조건을 참조하십시오. 하지만 설치 한 버전에서 나가면 심하게 사망했습니다. – melaos

+0

'Microsoft에 오류보고 보내기'유형의 사망 같이? 모든 양식을 내린 적이 있습니까 (항상 필요한 것은 아니지만 때로는 필요합니까). – Ant

+0

아니, ide 모드에서 실행하는 것과 다른 동작을하는 exit death의 다른 유형. – melaos

관련 문제