C# 라이브러리 모듈에서 힙 손상 오류가 발생합니다. C++ 응용 프로그램에서 COM을 통해 호출하고 있습니다.C# 클래스 라이브러리에서 힙 오류를 디버깅하려면 어떻게해야합니까?
HEAP : 특정 오류 버그가
해방 후 4b61be8에서 수정 4b61bb8 무료 힙 블록 ...
이 힙의 손상에 기인 할 수 있으며 나타낸다 [ app] .exe 또는로드 한 DLL 중 하나를 선택하십시오.
호출 스택의 상단은 다음과 같습니다
CustomMarshalers.dll!System.Runtime.InteropServices.CustomMarshalers.EnumeratorViewOfEnumVariant.MoveNext() + 0x168 bytes
이제 나의 이해는 .NET을 해결하는 것은 불가능했다 더 많은 메모리 문제가되지, 메모리 문제를 완화하기로 한 것이 었습니다. 그러나 나는 기억 상실을 야기 할 수있는 일이나 내가 그것을 고치려고 시도하는 방법을 생각할 수 없다. 특정 모듈은 Microsoft.VisualStudio.VCProjectEngine .NET 구성 요소를 사용하여 VC 프로젝트 파일을 매우 단순한 반복자로 반복합니다. 이전 약 100 건의 호출을 성공한 후 VCProject 필터 (폴더)에서 파일을 반복하는 동안 foreach 문을 위반합니다. 실제 코드는 다음과 같습니다.
IVCCollection CollectionFiles = (IVCCollection)FolderInProject.Files;
foreach (VCFile File in CollectionFiles)
{
[...]
}
어떻게 디버깅 할 수 있습니까?
는 업데이트 : 순수한 C# 콘솔 응용 프로그램에서 경우 호출 할 때
은 (어떤 COM 또는 네이티브 코드가 포함되지), 내가 얻을 :
유형의 처리되지 않은 예외 'System.AccessViolationException' [구성] .dll에서 발생했습니다.
추가 정보 : 쓰기 보호 된 메모리를 읽으려고 시도했습니다. 이것은 종종 이고 다른 메모리는 입니다.
아직 디버깅 방법에 대한 단서가 없습니다. 분명히 어딘가에 메모리 오류가 발생합니다 ...하지만 메모리 모델이 노출되지 않은 순수 관리 코드에서 어떻게 추적 할 수 있습니까?
COM 모듈 용 PIA를 만들었습니까? 아니면 미리 빌드 된 PIA를 사용 했습니까? – user7116
PIA 란 무엇입니까? 그게 당신이 요구하는 것이라면 공용 인터페이스를 구축합니다. 빌드 및 COM 개체를 성공적으로 전에 사용한 및이 즉시 작동하는 경우 작동합니다; VC .NET 개체를 사용하는 동안에 만 실패합니다. 또한, 내 followup을 참조하십시오. – Nick
PIA : http://msdn.microsoft.com/en-us/library/aax7sdch(VS.80).aspx – user7116