2013-01-30 2 views
0

좋은 아침,PB 12 IDE (및 응용 프로그램) 충돌이

을 닫은 후 나는 우리의 파워 빌더 12.1 클래식 (6639 빌드) 우리의 결과 파워 빌더 응용 프로그램 모두에 문제가 발생하는 것 같다. 현재 주 MDI를 닫은 후 응용 프로그램 (또는 코드를 실행하는 경우 IDE)이 충돌하는 문제가 발생합니다. 불행히도, 충돌에 일관된 패턴이 없습니다. 나는 MDI가 열릴 때 그것을 바로 닫을 수 있고 때로는 충돌 할 것이고, 다른 때는 적절히 닫을 것이다.

처음에는 Application 개체의 close 이벤트에 문제가 있거나 시스템 오류 이벤트가 발생하는 곳에서 문제가 발생했다고 생각했습니다. 닫기 이벤트를 통해 디버깅했으며 모든 단일 행이 성공적으로 실행되었지만 여전히 응용 프로그램이 충돌했습니다.

나는 응용 프로그램에서/PBDEBUG 플래그를 사용하고 성공적으로 닫히고 성공적으로 닫히지 않았 음을 알리는 디버그 정보를 얻으려고합니다. 나는 그럭저럭 할 수 있었다. 그리고 파일에는 정확한 같은 정보가 들어있다. 그들은 모두 다음 정보와 함께 마무리 :

Executing object function +DESTROY for class TRANSACTION, lib entry _TYPEDEF 
     Executing instruction at line 2325 
     Executing object function DESTROYTRANSACTION for class TRANSACTION, lib entry _TYPEDEF 
      Executing system dll function 
     End class function DESTROYTRANSACTION for class TRANSACTION, lib entry _TYPEDEF 
     Executing instruction at line 2326 
    End class function +DESTROY for class TRANSACTION, lib entry _TYPEDEF 

에서 Windows 응용 프로그램 이벤트 뷰어를 확인하고,이 표시됩니다 것입니다 : 나는 이러한 문제는 우리가 마이그레이션 할 때 발생하기 시작 들었다

Fault bucket , type 0 
Event Name: CLR20r3 
Response: Not available 
Cab Id: 0 

Problem signature: 
P1: txintf.exe 
P2: 11.1.18.1 
P3: 4cec7a53 
P4: System 
P5: 2.0.0.0 
P6: 506c18e6 
P7: 2d4a 
P8: 36 
P9: System.ObjectDisposedException 
P10: 

우리 PB11은 PB12 클래식으로 넘깁니다. 그것이 그 일과 관련이 있는지 확신 할 수는 없지만, 나는 그걸 버릴 줄 알았다.

비슷한 문제가 발생했거나이 문제를 진단하기 위해 사용할 수있는 추가 팁이 있습니까?

감사합니다.

편집 : 나는 정보의 일부 때때로 오류가 Windows 이벤트 로그에 표시되고 있음을 발견하고, 여기했습니다 드문 시간도있다

Faulting application name: txintf.exe, version: 13.0.2.3, time stamp: 0x4cec7a53 
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b83c8a 
Exception code: 0xe0434f4d 
Fault offset: 0x0000c41f 
Faulting process id: 0x2120 
Faulting application start time: 0x01ce0099b3021b60 
Faulting application path: MyApplicationPath\txintf.exe 
Faulting module path: C:\Windows\syswow64\KERNELBASE.dll 

을 때 그냥 - 인 - Time Debugger가 나타나서 System.ObjectDisposedException 예외가 catch 된 것을 보여줍니다. 그 정보로 판단하면 무언가에 의해 접근되고있는 파괴 된 물체가있는 것처럼 보입니다.

디버거를 통해 호출 스택을 검사했는데 Application.Close() 이벤트 이후에 아무것도 표시되지 않습니다.

+0

자동 인스턴스가있는 전역 변수는 무엇입니까? – Terry

+0

나는 지금까지 본 적이 없다. –

+0

수정 : 두 개의 자동 인스턴스화 된 전역 변수가 있으며 둘 다 구조체입니다. 둘 다 문자열, 부울, 정수 및 long을 포함합니다. 그중 하나에 배열이 포함되어 있습니다 –

답변

1

개체 파괴는 나를 다시 내 이론으로 인도하고, 내가 한 번 발견 한 다른 사례를 생각 나게합니다. 인스턴스 변수로 자동 인스턴스화 된 NVO가있는 비 자동 인스턴스화 NVO였습니다. 그렇습니다, 나는 죽은 말을 때리는 것처럼 들리지만, 그것은 내가 들어 본 유일한 경우입니다. 하나의 디버깅 아이디어는 모든 객체의 Destructor 이벤트에 스크립트 줄을 삽입하는 것입니다 (모두 상속됩니다.), 거기에 중단 점을 놓고 어떤 객체가 문제인지 또는 어떤 객체가 아닌지를 좁히십시오.

+0

그래, 당신이 묘사 한 것과 정확히 같았습니다. 인스턴스 변수로 자동 인스턴스화 된 NVO를 포함하는 비 자동 인스턴스 NVO가있었습니다. 코드를 정리하고 충돌이 중지되었습니다. –

+0

예, 불만스럽고, 경우에 따라 버그를 진단하기 어려운 경우가 있습니다. 그것은 이미 오래되었습니다. 나는 그것이 고정 될 것이기를 바란다. 다행히 문제를 해결했습니다. – Terry

+0

PBL Peeper, Terry에 덧붙일 좋은 보고서처럼 들립니다. –