- Может ли функция узнать, откуда она вызвана?, vnp, 21:43 , 17-Дек-03 (1)
>Такая вот задача - нужно узнавать из какой функции(нужен адресс) произошел вызов. >Можно ли такое осуществить? Компилятор gcc, проект пишеться на ANSI C, >под Linux. Идеи и ссылки приветствуютсья. Средствами собственно языка невозможно. Так или иначе, необходимо иметь таблицу символов, а также знать детали архитектуры и условия компиляции и сборки. Смотрите на gdb. Помните, что сколько-нибудь надежный анализ пути вызова возможен только при -g. >Зараннее ссенкс!
- Может ли функция узнать, откуда она вызвана?, genie, 00:03 , 18-Дек-03 (2)
Ya tak ponimau, chto rech' idet o i386 arhitekture?Togda mozhno sdelat' tak - pri vyzove funkcii prohodit' po vsem frames v steke i iskat', kakomu simvolu prinadlezhit adres vozvrata - a eto mozhno uznat' libo cherez map-file (esli est') libo v nachale raboty zaregistrirovat' adres vseh izvestnyh i interesuuschih tebya funkcii v kakom-to map. >>Такая вот задача - нужно узнавать из какой функции(нужен адресс) произошел вызов. >>Можно ли такое осуществить? Компилятор gcc, проект пишеться на ANSI C, >>под Linux. Идеи и ссылки приветствуютсья. > >Средствами собственно языка невозможно. Так или иначе, необходимо иметь таблицу символов, а >также знать детали архитектуры и условия компиляции и сборки. Смотрите на >gdb. Помните, что сколько-нибудь надежный анализ пути вызова возможен только при >-g. > >>Зараннее ссенкс!
- Может ли функция узнать, откуда она вызвана?, oxid, 01:11 , 18-Дек-03 (3)
>Такая вот задача - нужно узнавать из какой функции(нужен адресс) произошел вызов. >Можно ли такое осуществить? Компилятор gcc, проект пишеться на ANSI C, >под Linux. Идеи и ссылки приветствуютсья. >Зараннее ссенкс! Попробуй longjmp. Используй setjmp перед входом в ф-цию.
- Может ли функция узнать, откуда она вызвана?, divan, 10:44 , 18-Дек-03 (4)
Гм, пришлось отказаться от такого подхода. Дело в том, что функция должна вызываться из подключаемых модулей. Собственно и нужно было определять, из какого модуля вызываеться. Сделал это немного пояпонски, но для данного случая идеально(подробностей писать не буду - требует дальнейшего вникания в проект :) Всем ссенкс.
- Может ли функция узнать, откуда она вызвана?, Murr, 22:13 , 09-Янв-04 (5)
__builtin_return_address(0)
|