Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с отладочными символами 
V
    Опции темы
586
Дата 15.6.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Дана строка, к примеру:

char str[]="kernel32.dll!Beep";

Надо получить адрес, на который ссылается этот символ.
 
PM   Вверх
Earnest
Дата 16.6.2006, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Может, как-то так?
Код

HMODULE hMod = LoadLibrary ("kernel32.dll");
FARPROC fp = GetProcAddress(hMod,"Beep");
 


--------------------
...
PM   Вверх
586
Дата 16.6.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Нет, это как-то делается с помощью dbghelp.dll
Обычно это используется при отладке приложений, например в отладчике NTSD

0:000> ? kernel32
Evaluate expression: 2088763392 = 7c800000
0:000> ? kernel32!Beep
Evaluate expression: 2088995411 = 7c838a53
0:000> u kernel32!Beep kernel32!Beep+64
kernel32!Beep:
7c838a53 ...
...
7c838ab4 ...

Как он это делает? 
PM   Вверх
Earnest
Дата 16.6.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Вот не знаю ... Может кто-нибудь еще подскажет... 


--------------------
...
PM   Вверх
threef
Дата 22.6.2006, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 27.10.2005
Где: Запорожье

Репутация: нет
Всего: 10



Earnest  уже подсказала. Делишь строку на подстроки с разделителем '!', первая, как я понял - библиотека, стартовый одрес - это ее HMODULE, следующая строка - имя экспортируемой функции(GetProcAddress)  и т.п. 
PM MAIL   Вверх
586
Дата 22.6.2006, 19:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 39
Всего: 146



Как такое обработать:
Код
0:000> ? Beep
Evaluate expression: 2088995411 = 7c838a53
 Искать по всем загруженным модулям???

А если приложение отладочное, и в нём есть переменная, например hinst:
Код
0:000> ? test!hinst
Evaluate expression: 4210688 = 00404000
0:000> dd test!hinst
00404000  00400000

Зачем изобретать велосипед, если есть dbghelp.dll

----------------
Я похоже нашел то, что искал -- SymFromAddr и SymFromName из imagehlp.dll 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.2651 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.