Я пытаюсь изолировать утечки памяти в собственном коде в Windows.В стеке вызовов DebugDiag не отображается номер строки функций в стеке вызовов
Я выполнил несколько итераций тестового примера и подключил DebugDiag к процессу сбора информации о предполагаемой утечке (утечка памяти подтверждена несколькими запусками в PerfMon).
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 также имеют номера строк (с именами файлов) в своих журналах различий. Однако в отчете DebugDiag я не нахожу номера строк этих функций. Если функции действительно очень длинные, становится сложно описать контекст, просто глядя на стек вызовов, не имея номеров строк. Есть ли способ извлечь номер строки функции (файл) из журналов DebugDiag?
Еще одна вещь, которую я хотел знать, - это значение гексагонального смещения с каждой записью в столах вызовов.
Каков размер распределения в стеке вызовов? это выделенная память, которая не была освобождена (следовательно, утечка) за выполнение этого стека вызовов?
Любые указания на полную документацию о возможностях DebugDiag?