Конференция "Основная" » Получить Call-Stack
 
  • DevilDevil © (19.11.07 19:07) [0]
    Здравствуйте.

    В своё время уже интересовался сабжем (на Мастерах), мне посоветовали JVCL. Там просто ОГРОМНОЕ нагромождение кода и модулей; а мне необходимо сделать всё компактненько, в одном модуле.

    Подскажите, в чём суть, каким образом получается получить адреса вызовов? (я уж не спрашиваю, как получать данные из запакованного *.map ресурсника ).

    Искренне надеюсь, что истина рядом, и за день можно будет сварганить что-то приемлемое.

    Заранее спасибо.
  • trubin © (19.11.07 20:08) [1]
    http://rsdn.ru/article/Delphi/DelphiJCL.xml

    На основе данной статьи в свое время за пару часов сварганил отладочную версию, и послал клиенту. Там вроде все просто. Если самому делать, может их исходники помогут.
  • Сергей С. (19.11.07 21:27) [2]

    > каким образом получается получить адреса вызовов?


    Раскрутив стек.

    Тебе уже сказали - не занимайся фигней, в общем случае задача не решаема.
  • DevilDevil © (20.11.07 10:29) [3]
    так я и думал - никто не знает )
  • DevilDevil © (20.11.07 10:47) [4]
    если я правильно понял, то во фреймах хранятся так же параметры вызванных функций; почему в JclDebug нет соответствующего демо ?
  • Правильный_Вася (20.11.07 11:02) [5]
    при fastcall большинство параметров помещаются в регистры
  • atruhin © (21.11.07 17:44) [6]
    Несколько месяцев назад Alex Konshin приводил пример реализации раскрутки стека.
    Поищи.
  • DevilDevil © (22.11.07 16:59) [7]
    > atruhin ©   (21.11.07 17:44) [6]

    а где поискать можно ?
  • Сергей М. © (22.11.07 17:01) [8]
    Удалено модератором
  • DevilDevil © (22.11.07 17:24) [9]
    > Сергей М. ©   (22.11.07 17:01) [8]

    Как JCL решает нерешаемую задачу ?
  • KSergey © (22.11.07 18:16) [10]
    Там не так уж много надо взять от ждеди, чтобы call-stack получить.
    МОжет не стоит велосипеды изобретать?
  • DevilDevil © (22.11.07 19:38) [11]
    вообще говоря, я его у же юзаю.
    хотя, не очень хочется.

    используется один юнит JclDebug, а он в свою очередь тянет ещё 15-20 jcl-ных модулей.
  • DevilDevil © (22.11.07 19:40) [12]
    как Delphi определяет параметры функций в CallStack-е ?
    В Jcl подобной фичи нет вроде
  • vpbar © (22.11.07 22:28) [13]
    >>DevilDevil ©   (22.11.07 19:40) [12]
    Используя отладочную информацию доступную линковщику.
    Нет и быть не может.
  • Сергей М. © (23.11.07 08:17) [14]

    > Как JCL решает нерешаемую задачу ?
    >


    Плохо она решает. Именно по причине того, что в стеке в общем случае м.б. солянка сборная, а не только фреймы, сгенерированные дельфийским компилятором.


    > как Delphi определяет параметры функций в CallStack-е ?


    Убери из целевого модуля отлад.информацию - и тут же перестанет определять)
  • DevilDevil © (23.11.07 10:07) [15]
    > Сергей М. ©   (23.11.07 08:17) [14]

    :) без отладочной информации у тебя и брейкпоинты позеленеют.
  • Сергей М. © (23.11.07 10:12) [16]

    > DevilDevil ©   (23.11.07 10:07) [15]


    А откуда возьмется отладочная инй-ция в сторонних PE-модулях, используемых процессом твоего приложения ?
    В них ведь тоже осуществляется вызов подпрограмм, причем не обязательно в соответствии с дельфийскими умалчиваемыми соглашениями !
  • DevilDevil © (23.11.07 14:14) [17]
    > Сергей М. ©   (23.11.07 10:12) [16]

    секундочку...
    а кто говорил о сторонних приложениях ?
  • Сергей М. © (23.11.07 14:17) [18]

    > кто говорил о сторонних приложениях ?


    Никто не говорил.

    PE-модуль - это не обязательно модуль приложения, это м.б. и модуль некоей библиотеки.
  • Сергей М. © (23.11.07 14:19) [19]
    Ты вообще что сотворяешь-то ? Систему протоколирования "глюков"  своего приложения, которое ты впарил "заказчику"?)
 
Конференция "Основная" » Получить Call-Stack
Есть новые Нет новых   [133935   +109][b:0][p:0.001]