|
일단 프로그램이 디버깅 모드로 제작이 된 것인지, 릴리즈 모드로 제작된 것인지 궁금합니다.
디버깅 모드의 경우, 변수 등에 대한 초기화를 디버거가 자체적으로 처리하여 논리적으로 오류가 있는데도 정상적으로 동작할 수 있습니다.
그리고,
말씀하여 주신 상태는
환경이 다른 경우인데요.
ntdll.dll 등은 시스템 기본 dll입니다.
이쪽으로 들어오기 전에 문제가 발생한 것입니다.
운영체제의 버전에 따라 프로그래밍을 다르게 처리하여야 할 경우가 존재하는데,
이런 경우는 그리 많은 경우가 아닙니다.
대부분 시스템 path 등의 환경변수가 정상적으로 설정되어 있지 않아
찾고자 하는 dll이 없다는 등의 문제로 이와 같은 문제가 발생할 수 있습니다.
1. 되는 쪽과 안 되는 쪽의 환경 변수 비교
(풀그램 실행 시 필요한 dll이 모두 실행풀그램, 혹은 path 상에 존재하는지 확인 등)
2. 운영체제 버전에 따라 다르게 코딩하여야 하는 부분 존재유무 확인
이렇게 접근하시면 될 듯 합니다.
crazybok 님이 쓰신 글 :
: 안녕하세요.
:
: 초보 프로그래머 입니다.
:
: 이번에 프로그램을 수정하여 업데이트 실시하였는데 한 장비는 정상적으로 돌아가고 있으나 다른 장비는 "xx.exe에 문제가 있어서 프로그램을 종료해야 합니다. 불편을 끼쳐드려 죄송합니다."의 메세지 창이 뜨며 이 창에는 디버그(B), 닫기(C) button이 있었습니다. 그래서 그중 디버그 버튼을 클릭하니 첨부한 이미지와 같은 내용이어서 문의 드립니다.
:
: ntdll.DbgBreakPoint:
: 7C93120E CC int 3
: 7C93120F C3 ret <- 화살표 위치
:
: 개발 툴은 BC5, 작업은 노트북(Win7)에서 VirtualBox(winxp service Pack2) 에서 실시하였습니다.
: 장비는 window xp를 사용합니다.(sesrvice pack이 다르면 이와 같은 문제가 발생하나요?)
: 그리고 window xp service pack 2와 service pack3의 ntdll.dll의 version이 서로 다른데요.
: 이 version이 다르면 BC에서 작업하는 것에 영향을 미치나요?
:
: 동일한 update program을 장비1에서는 정상적으로 작동하고 장비 2에서는 위와같은 문제점이 발생합니다.
:
: 해결 방법이나 아니면 접근 방법이라도 알려주세요.
:
|