Windows의 기본 코드에서 메모리 누수를 격리하려고합니다.DebugDiag 호출 스택에 호출 스택의 함수 줄 수가 표시되지 않습니다.
테스트 케이스를 여러 번 반복 실행하여 의심되는 누출 (PerfMon에서 여러 번 실행하여 메모리 누출이 확인 됨)에 대한 정보를 수집하는 프로세스에 DebugDiag를 연결했습니다.
는 DebugDiag 지금 내가 제대로 문자를 구성한Call stack sample 1
Address 0x0f09e2c0
Allocation Time 00:22:38 since tracking started
Allocation Size 8.54 KBytes
Function Source destination
ntdll!RtlpReAllocateHeap+19c ntdll!RtlAllocateHeap
ntdll!_except_handler4
ntdll!RtlReAllocateHeap+22f ntdll!RtlReAllocateHeap
sqlncli11!MpReallocZeroMemory+66
sqlncli11!SQLReAllocateMemoryEx+22 sqlncli11!MpReallocZeroMemory
sqlncli11!AllocPlex+1a4 sqlncli11!SQLReAllocateMemoryEx
sqlncli11!SetADRec+2a4 sqlncli11!AllocPlex
sqlncli11!SQLBindCol+217 sqlncli11!SetADRec
odbc32!SQLBindCol+3c0
sscfdm!CSSLockSqlCursor::DoExecuteStmt+11a
sscfdm!CSSSqlCursor::Execute+129 sscfdm!CSSLockSqlCursor::DoExecuteStmt
sscfdm!CSSSqlObj::Execute+d86 sscfdm!CSSSqlCursor::Execute
sscfom!CSSBusComp::SqlExecute+3a sscfdm!CSSSqlObj::Execute
<<many multiple lines below>>
같은 의심스러운 호출 스택을 지적 내가 호출 스택에서 더 많은 정보를 추출 할 방법을 알고 싶었다.
UMDH 로그에는 diff 로그에 줄 번호 (파일 이름 포함)가 있습니다. 그러나 DebugDiag 보고서에서 해당 함수의 줄 번호를 찾지 못했습니다. 함수가 너무 길면 라인 번호가 없어도 호출 스택을보고 컨텍스트를 설명하기가 어려워집니다. DebugDiag 로그에서 함수 (파일)의 행 번호를 추출 할 수있는 방법이 있습니까?
호출 스택의 각
module!function
항목이있는 16 진수 오프셋의 중요성을 알고 싶습니다.호출 스택의 할당 크기는 얼마입니까? 이 호출 스택 실행 당 해제되지 않은 할당 된 메모리 (따라서 누출)입니까?
DebugDiag 기능에 대한 포괄적 인 문서를 가리키는 모든 포인터가 있습니까?