The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Может ли функция узнать, откуда она вызвана?, !*! divan, 17-Дек-03, 13:34  [смотреть все]
Такая вот задача - нужно узнавать из какой функции(нужен адресс) произошел вызов. Можно ли такое осуществить? Компилятор gcc, проект пишеться на ANSI C, под Linux. Идеи и ссылки приветствуютсья.
Зараннее ссенкс!
  • Может ли функция узнать, откуда она вызвана?, !*! 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)



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру