네이티브 메모리 누수가있는 경우 관리되는 프로세스 메모리 덤프를 용의자로 분석하려고합니다. windbg을 사용할 수 있으려면 (서버에서 힙 확장을 사용) 서버 프로세스에 대한 사용자 모드 호출 스택을 활성화했습니다.Windows 힙 할당 스택 호출 - 이상한 콜 스택
많은 크기의 블록을 볼 수 있습니다. 수동으로을 -a -p ! 힙을 사용하여 확인) 형태
!heap -p -a 000000003ca5cfd0
address 000000003ca5cfd0 found in
_HEAP @ 1ea0000
HEAP_ENTRY Size Prev Flags UserPtr UserSize - state
000000003ca5cfa0 0009 0000 [00] 000000003ca5cfd0 00068 - (busy)
7766bbed ntdll! ?? ::FNODOBFM::`string'+0x000000000001913b
7fef7b76a57 msvcr120!malloc+0x000000000000005b
7fef7b76967 msvcr120!operator new+0x000000000000001f
7fe9a5cdaf8 +0x000007fe9a5cdaf8
많은 콜 스택이 있습니다 당신은 그들이 내 덤프 파일에 MB의 수백을 가지고 있기 때문에 이러한 할당을 무엇인지 어떤 생각을 가지고 있습니까?
편집 LM은 내가 (NGEN 사용) 응용 프로그램에 생성 된 네이티브 이미지가 없다고 가정
start end module name
00000000`773b0000 00000000`774cf000 kernel32 (pdb symbols)
00000000`774d0000 00000000`775ca000 user32 (deferred)
00000000`775d0000 00000000`77779000 ntdll (pdb symbols)
00000000`77790000 00000000`77797000 psapi (deferred)
00000000`777a0000 00000000`777a3000 normaliz (deferred)
00000001`3f810000 00000001`3f818000 ManagedService (deferred)
000007fe`dd2d0000 000007fe`de398000 System_Web_ni (deferred)
'7fe9a5cdaf8'주위의 모든 모듈에 대한 기호가 누락되었습니다. 'lm'을 실행하고 그 주소가 대응하는 모듈을 찾아 심볼을 찾을 수 없는지 확인하십시오. –
@PatrickQuirk ManagedService와 System_Web_ni 사이의 영역에는 매핑 된 모듈이 없습니다. – Ghita
이 경우 동적 코드 일 수 있습니다. 다음 단계가 68 바이트가 할당 될 때 [중단 점]을 추가하는 것 이외의 다른 항목이 될지 확실하지 않습니다. (http://codediary.wordpress.com/2010/03/29/4/) 스택 추적. –