Что делать? XXX!yyyyyyyyyy+zzz означает вывод !heap -flt s

Я анализирую некоторые дампы памяти пользовательского режима, чтобы попытаться отследить утечку, и у меня есть несколько кандидатов на предмет утечки, но я продолжаю видеть эти записи в своих дампах, когда запускаю команду !heap -flt s xx. .

    14a8bd58 0006 0006  [07]   14a8bd60    00018 - (busy)
    14a8bd88 0006 0006  [07]   14a8bd90    00018 - (busy)
    14a8bdf8 0006 0006  [07]   14a8be00    00018 - (busy)
    14a8bf48 0006 0006  [07]   14a8bf50    00018 - (busy)
      ? SomeModule!SomeFunction+1bdf4

Я понимаю, что

    14a8bd58 0006 0006  [07]   14a8bd60    00018 - (busy)

линии, но я не совсем уверен, что линии

      ? SomeModule!SomeFunction+1bdf4

на самом деле означает. Эти дампы были захвачены с флагом +ust для трассировки кучи.


person Zipper    schedule 23.04.2012    source источник


Ответы (2)


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

В Windows виртуальное адресное пространство процесса заполняется набором модулей. Каждый модуль состоит из базового адреса и размера. Таким образом, иногда эта информация отображается другим способом: Module + Relative Offset.

Модуль может содержать функции. В тех случаях, когда таблицы символов не повреждены, можно найти относительные смещения (в модуль) и размеры этих функций. Дамп просто отображает эту информацию в более удобном для человека формате.

person Mike Kwan    schedule 23.04.2012

SomeModule — это имя исполняемого модуля.

SomeFunction — это имя функции, экспортированной из того модуля, который выполняется.

+1bdf4 — это смещение в шестнадцатеричном формате от начала этой функции.

Значение смещения в этом примере очень велико, что может означать, что таблица символов для модуля отсутствует, а смещение показано относительно ближайшей функции с известным именем, как правило, экспортируемой.

person Andrey    schedule 23.04.2012
comment
Модуль также может быть из EXE (не DLL). - person Mike Kwan; 23.04.2012