2016-03-12 8 views
2

enter image description hereтрудно понимание адреса памяти в инструменте Vtune от Intel

В изображении выше, я использовал Vtune инструмент, чтобы увидеть поток процесса.

Также выгруженная память для windbg.

я намерен убедиться, что Engine.dll + 840c1 разобрали участок в WinDbg, но

кажется результат отличается.

Можете ли вы, ребята, сказать, что я делаю неправильно?

+0

Мне непонятно, как вы получили от 0x100840bd до Engine + 0x840c1 –

ответ

0

[Engine.dll] в стеке VTune на самом деле не означает адрес загрузки библиотеки Engine.dll (как вы его рассматриваете в WinDbg). Он представляет собой некоторую нерешенную функцию из этой библиотеки. Когда для модуля нет информации об отладке, VTune использует представление [Module name] как имя функции для всех функций внутри этого модуля. VTune может распознавать границы функций, используя статический анализ, поэтому все функции из Engine.dll с данными о производительности или отображаемые в стеке, которые не являются экспортированными функциями (например, DllUnregisterServer), будут представлены как [Engine.dll].

Попробуйте disasm Engine.dll, напр. dumpbin tool - адреса должны совпадать с адресами, которые вы видите в VTune, чтобы вы могли сравнивать или проверять представление об отсутствии в VTune.

+0

спасибо за заявку. Я проверил несколько тестов. Я обнаружил, что точка входа модуля модуля vtune и точка входа модуля файла дампа были разными. Также попытался совместить дизассемблированный код, но это не совсем то же самое. Это было сопоставимо. Когда я сопоставляю точку входа модуля, я обнаружил, что адреса этой функции указывают правильное местоположение. Наконец, у меня есть вопрос. Вы имеете в виду, что vtune имеет внутри себя инструмент dumpbin? –

+0

[dumpbin] (https://msdn.microsoft.com/en-us/library/c1h23y6c.aspx) является частью MS Visual Studio. Вы также можете изменить синтаксис сборки в [Параметры VTune] (https://software.intel.com/en-us/node/544340). – Vital