Вниз
Скачать: CL | DM;

Получить Call-Stack   Найти похожие ветки 

← →
DevilDevil ©   (2007-11-19 19:07) [0]

Здравствуйте.

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

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

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

Заранее спасибо.


← →
trubin ©   (2007-11-19 20:08) [1]

http://rsdn.ru/article/Delphi/DelphiJCL.xml

На основе данной статьи в свое время за пару часов сварганил отладочную версию, и послал клиенту. Там вроде все просто. Если самому делать, может их исходники помогут.


← →
Сергей С.   (2007-11-19 21:27) [2]


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


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

Тебе уже сказали - не занимайся фигней, в общем случае задача не решаема.


← →
DevilDevil ©   (2007-11-20 10:29) [3]

так я и думал - никто не знает )


← →
DevilDevil ©   (2007-11-20 10:47) [4]

если я правильно понял, то во фреймах хранятся так же параметры вызванных функций; почему в JclDebug нет соответствующего демо ?


← →
Правильный_Вася   (2007-11-20 11:02) [5]

при fastcall большинство параметров помещаются в регистры


← →
atruhin ©   (2007-11-21 17:44) [6]

Несколько месяцев назад Alex Konshin приводил пример реализации раскрутки стека.
Поищи.


← →
DevilDevil ©   (2007-11-22 16:59) [7]

> atruhin ©   (21.11.07 17:44) [6]

а где поискать можно ?


← →
Сергей М. ©   (2007-11-22 17:01) [8]

Удалено модератором


← →
DevilDevil ©   (2007-11-22 17:24) [9]

> Сергей М. ©   (22.11.07 17:01) [8]

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


← →
KSergey ©   (2007-11-22 18:16) [10]

Там не так уж много надо взять от ждеди, чтобы call-stack получить.
МОжет не стоит велосипеды изобретать?


← →
DevilDevil ©   (2007-11-22 19:38) [11]

вообще говоря, я его у же юзаю.
хотя, не очень хочется.

используется один юнит JclDebug, а он в свою очередь тянет ещё 15-20 jcl-ных модулей.


← →
DevilDevil ©   (2007-11-22 19:40) [12]

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


← →
vpbar ©   (2007-11-22 22:28) [13]

>>DevilDevil ©   (22.11.07 19:40) [12]
Используя отладочную информацию доступную линковщику.
Нет и быть не может.


← →
Сергей М. ©   (2007-11-23 08:17) [14]


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


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


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


Убери из целевого модуля отлад.информацию - и тут же перестанет определять)


← →
DevilDevil ©   (2007-11-23 10:07) [15]

> Сергей М. ©   (23.11.07 08:17) [14]

:) без отладочной информации у тебя и брейкпоинты позеленеют.


← →
Сергей М. ©   (2007-11-23 10:12) [16]


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


А откуда возьмется отладочная инй-ция в сторонних PE-модулях, используемых процессом твоего приложения ?
В них ведь тоже осуществляется вызов подпрограмм, причем не обязательно в соответствии с дельфийскими умалчиваемыми соглашениями !


← →
DevilDevil ©   (2007-11-23 14:14) [17]

> Сергей М. ©   (23.11.07 10:12) [16]

секундочку...
а кто говорил о сторонних приложениях ?


← →
Сергей М. ©   (2007-11-23 14:17) [18]


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


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

PE-модуль - это не обязательно модуль приложения, это м.б. и модуль некоей библиотеки.


← →
Сергей М. ©   (2007-11-23 14:19) [19]

Ты вообще что сотворяешь-то ? Систему протоколирования "глюков"  своего приложения, которое ты впарил "заказчику"?)


← →
DevilDevil ©   (2007-11-23 14:55) [20]

> Сергей М. ©   (23.11.07 14:19) [19]
> Ты вообще что сотворяешь-то ? Систему протоколирования "глюков"
>  своего приложения, которое ты впарил "заказчику"?)


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


← →
Сергей М. ©   (2007-11-23 15:25) [21]


> DevilDevil ©   (23.11.07 14:55) [20]


Хнёй ты занялся, скажу я тебе)

Достаточно получить  строку с дословным сообщением об исключении)


← →
DevilDevil ©   (2007-11-24 14:54) [22]

> Сергей М. ©   (23.11.07 15:25) [21]

НЕДОСТАТОЧНО !!!


← →
Германн ©   (2007-11-24 19:49) [23]


> DevilDevil ©   (24.11.07 14:54) [22]

Ну раз недостаточно (а порой действительно так), то потрать $99 на Еуреку  и не пожалеешь.


← →
DevilDevil   (2007-11-25 00:03) [24]

> Германн ©   (24.11.07 19:49) [23]
что это такое и какой функционал ?


← →
Германн ©   (2007-11-25 00:16) [25]


> что это такое и какой функционал ?
>

http://www.eurekalog.com/tutorials.php



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.01 c
2-1214219491
Евро2008
2008-06-23 15:11
2008.07.27
Повернуть на 90 градусов


15-1213172370
vajo
2008-06-11 12:19
2008.07.27
Почему-то перегружается компьютер при страте Виндовс ХР


15-1213034385
cosinus
2008-06-09 21:59
2008.07.27
Подскажите идею по реализации задачи.


2-1214540511
alex810
2008-06-27 08:21
2008.07.27
Ошибка при подключении


2-1214368996
Димон_
2008-06-25 08:43
2008.07.27
TXPManifest




   Наверх