Могу ли я перевести АДРЕС в строку кода? - PullRequest
0 голосов
/ 31 марта 2011

Я получаю из приложения сообщение, подобное этому: "Инструкция в 0xA .... ссылается на память в 0xB ..... Память не может быть" записана ". Нажмите OK, чтобы завершить программу"

адрес 0xA выглядит действительным: 0x10001053.Exe отображается в памяти по умолчанию в 0x40000000 и dll в 0x10000000, поэтому он находится в первой загруженной dll со смещением 1053h.

Кто-нибудь знает метод преобразования этого адреса в строку исходного текста?

Ответы [ 2 ]

3 голосов
/ 31 марта 2011

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

Если вы используете компилятор MS, вам необходим параметр компоновщика / MAP .

1 голос
/ 31 марта 2011

Если у вас есть интерактивный отладчик, откройте окно дизассемблера и найдите кодовую метку, которая предшествует строке ассемблера. Это должно соответствовать функции в исходном коде (или функции, которая встроила код, вызвавший проблему).

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

...