[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gdb и elf



В Птн, 09/11/2007 в 16:38 +0300, Dmitry E. Oboukhov пишет:
> >> как адрес функции который выдает gdb преобразовать в смещение от начала
> >> elf-файла?
> 
> > Судя по всему никак. То ж адрес в памяти, который зависим от состояния
> > памяти на момент выделения. Может капнуть в сторону man dlopen:
> насколько я понимаю все программы с одного адреса и грузятся?
> 
> то есть если взять и сделать что-то вроде 
> 
> #include <stdio.h>
> void foo(void)
> {
> }
> 
> void main(void)
> {
>   printf("%d\n", (int)&foo);
> }
> 
> то как ни вызывай всегда вернет одно и тоже число

На сколько я знаю это не правда. Тот эффект, который вы наблюдаете - это
либо между вызовами Вашей программы состояние памяти не сильно меняется
и Ваша программа грузится в одно и то же место, либо это результат
работы файлового кэша. Попробуйте запомнить адрес, перегрузиться,
запустить несколько ресурсоёмких программ и повторить попытку.

> соответственно существует прямая зависимость - смещение от начала elf и
> адрес в памяти.

На сколько я знаю такой зависимости не существует.

-- 
Покотиленко Костик <casper@meteor.dp.ua>



Reply to: