Как получить реальный адрес функции в VC ++ - PullRequest
2 голосов
/ 17 мая 2011

Я изучаю Win32API. Моя программа имеет две функции. Я пытаюсь использовать режим отладки в VC ++. Я устанавливаю точку останова при вызове фиктивной функции

void CALLBACK Dummy(){

    printf("\n Hello Dummy Func!");
}

//////////////////////////////////////////////////////////////////////////

int _tmain(int argc, _TCHAR* argv[]){

      (breakPoint) Dummy();
}

когда я вызываю функцию dumy (). Запрограммируйте переход на адрес 012110D7 в виде кода потока

Dummy:
012110D7  jmp         Dummy(12113A0h) 

в то время как реальный адрес фиктивной функции 12113A0h Мой вопрос: Как получить реальный адрес функции Dummy? 12113A0h Проблема решена, когда я бегу в режиме выпуска. Это первый раз, когда я присоединяюсь к потоку StackOver. Я надеюсь, что каждое тело поможет мне. Спасибо !! BUZZ

1 Ответ

5 голосов
/ 17 мая 2011

Эта инструкция jmp вставляется компоновщиком для поддержки редактирования + продолжения в конфигурации отладки. Что позволяет редактировать и компилировать ваш код во время отладки. Дополнительная косвенность через инструкцию jmp позволяет генерировать другую версию функции, назначение jmp изменяется, чтобы изменения вступили в силу.

Поверните Редактировать и продолжите работу с Project + Properties, Linker, General, Enabled Incremental Linking = No.

...