Где (в куче) используются общие данные? - PullRequest
0 голосов
/ 16 ноября 2018

Я имею дело с утечкой памяти (использование памяти увеличивается), и мы обнаружили, что в общей памяти этого приложения есть некоторые вещи:

Я открыл дамп-файл с помощью Visual Studio, и в окне отладки «Память» достаточно информации об адресе 0xb48B661f44, но команды Windbg !heap -h 0 дают следующее:

...
Segment at 000000b48a850000 to 000000b48b04f000 (007ff000 bytes committed)
Segment at 000000b48f650000 to 000000b49061f000 (00fcf000 bytes committed)
...

Другими словами, упомянутый адрес отсутствует в куче, что означает, что это общие данные.

Я хотел бы знать, какой объект в куче ссылается на эти данные. Есть ли способ узнать?

Редактировать после первых комментариев

Тем временем я пытался работать с командой Windbg s, но это, похоже, не работает:

s -q 0xb483b70000 0xb4842af000 0xb48B661f44

=> нет результатов.

Для вашей информации, начальный и конечный адрес получаются следующим образом:

!heap -h 0

0:000> !heap -h 0
Index   Address  Name      Debugging options enabled
  1:   b483b70000 
    Segment at 000000b483b70000 to ...
...
  4:   ...
Segment at ... to 000000b4842af000 (00002000 bytes committed)

Итак, я считаю, что, выбрав 0xb483b70000 в качестве начальной точки и 0xb4842af000 в качестве конечной точки, я покрыл всю кучу.

Второе редактирование

Я также исследовал упомянутый адрес памяти с помощью команды !address, но я не понимаю вывод:

0:000> !address 0xb48B661f44

Mapping file section regions...
Mapping module regions...
Mapping PEB regions...
Mapping TEB and stack regions...
Mapping heap regions...
Mapping page heap regions...
Mapping other regions...
Mapping stack trace database regions...
Mapping activation context regions...

Usage:                  <unknown>
Base Address:           000000b4`8b660000
End Address:            000000b4`8b666000
Region Size:            00000000`00006000 (  24.000 kB)
State:                  00001000          MEM_COMMIT
Protect:                00000004          PAGE_READWRITE
Type:                   00040000          MEM_MAPPED
Allocation Base:        000000b4`8b660000
Allocation Protect:     00000004          PAGE_READWRITE

Content source: 1 (target), length: 40bc

Что эта информация говорит об указанном адресе?

...