Поиск места падения с помощью файла карты - PullRequest
1 голос
/ 10 августа 2011

Я расследую неисправный код.Верификатор приложения показывает, что куча повреждена после вызова ниже:

AA!Class::Function+dbaf

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

Предпочтительный адрес загрузки: 00400000

0002:00000dc4       __imp_?Class@Function@@QAEXV?$vector@Uty_point@@V?$allocator@Uty_point@@@std@@@std@@0PAV23@@Z 0049bdc4 

Примечание. У меня есть анонимное имя класса и функции.

Ответы [ 2 ]

1 голос
/ 10 августа 2011

У вас есть только файл карты? Нет PDB? Если у вас есть полные символы, тогда используйте карту и .pdbs (и .exe) с WinDBG (вы на Windows?). Я полагаю, что вы видите, как вам дали имя функции.

Если нет ... dbaf - ваш ответ. Что это значит? Смещение должно быть местоположением ошибочных инструкций. Конечно, вам нужно выяснить количество инструкций (инструкций по сборке), которые есть у каждого.

0 голосов
/ 11 августа 2011

Я помню, как смог перейти к ошибочному коду, имея только файл карты и значение EIP (указатель инструкции, адрес, где произошел сбой кода), быстрый поиск в Google показал мне эту веб-страницу: Файлы карт и перебазирование DLL . Из того, что я помню, в идеальной ситуации вы можете изменить значение EIP непосредственно в отладчике Visual C ++, и оно перейдет к соответствующей строке кода.

Так вот, это было действительно очень давно в эпоху Visual C ++ 6, я даже не знаю, применимо ли оно до сих пор. Как уже указывалось, вы действительно должны смотреть на символы и параметры базы данных программы в Visual C ++, есть масса информации о том, как их настроить и использовать.

...