Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизНе подключается скомпилированный из исходников system.dcu Найти похожие ветки
← →
ki11er (2003-08-12 13:28) [0]Кто-нибудь пробовал перекомпилировать system.pas из исходников rtl? Компилируется вроде нормально, но после замены родного system.dcu на новый дэлфи начинает ругаться "не могу найти system.pas". Реально ли заставить это работать или бросить эту затею?
Спасибо.
← →
Плохиш_ (2003-08-12 13:38) [1]Не рановато исходники портить полез?
← →
Юрий Федоров (2003-08-12 14:04) [2]не делай так
← →
ki11er (2003-08-12 14:14) [3]Плохиш_
Не рановато. А вот ты похоже рановато сюда сунулся...
Юрий Федоров
А как делать?
← →
Юрий Федоров (2003-08-12 14:18) [4]>>А как делать?
Это смотря что нужно сделать, откуда вообще такая необходимость появилась ?
← →
Verg (2003-08-12 14:33) [5]
> А как делать?
> или бросить эту затею
← →
ki11er (2003-08-12 14:45) [6]Verg
Обоснование можно?
Юрий Федоров
Сделать нужно вот что. Подправить немного TObject на предмет введения некоторых отладочных возможностей.
← →
wl (2003-08-12 15:07) [7]Я в детстве тоже пробовал исходники компилять, но потом бросил эту затею...
← →
Camus (2003-08-12 15:14) [8]> ki11er (12.08.03 14:45) [6]
Какие же такие потребовались отладочные возможности, что для них нужно аж перекомпилировать фундамент?
Неужели нельзя обойтись без этого? Что за задача-то?
← →
Юрий Федоров (2003-08-12 15:20) [9]каких именно возможностей? Не поверю, что нельзя без этого обойтись
← →
Anatoly Podgoretsky (2003-08-12 15:21) [10]Не трожь генофонд, пожалеешь
← →
icWasya (2003-08-12 15:29) [11]Дело тут обстоит так
1) Если изменить интерфейсную часть любого модуля, то это повлечет за собой перекомпиляцию всех модулей, которые его используют.
2) Модуль System используется ВСЕМИ другими модулями.
3) Некоторые модули поставляются БЕЗ исходных текстов.
1)+2)+3) - додумайте сами
← →
ki11er (2003-08-12 15:34) [12]
> Какие же такие потребовались отладочные возможности, что
> для них нужно аж перекомпилировать фундамент?
>
> Неужели нельзя обойтись без этого? Что за задача-то?
Секрет ;-) Ну например, вести список каунтеров для объектов каждого типа. Т.е. нужно из конструктора TObject нарастить счетчик в хэшэ с ключом classname. В деструкторе - соответственно уменьшить счетчик.
← →
ki11er (2003-08-12 15:38) [13]icWasya
> Если изменить интерфейсную часть любого модуля, то это повлечет
> за собой перекомпиляцию всех модулей, которые его используют.
Что понимается под "изменить интерфейсную часть"?
← →
icWasya (2003-08-12 15:42) [14]это значит изменить что-либо от строчки с
interface
до
implementation
← →
Digitman (2003-08-12 16:02) [15]
> ki11er
твой "например" делается безо всякого коверкания system.pas
достаточно перехватить вызовы сист.процедур инициализации/деинициализации экземпляров
← →
ki11er (2003-08-12 16:03) [16]icWasya
Ну не буду этого менять...
← →
ki11er (2003-08-12 16:20) [17]
> достаточно перехватить вызовы сист.процедур инициализации/деинициализации
> экземпляров
как?
← →
Digitman (2003-08-12 16:22) [18]см. run-time-перехват вызовов System.@ClassCreate и System.@ClassDestroy
этого вполне достаточно для протоколирования обращений к системному конструктору/деструктору любых экземпляров-наследников TObject
← →
ki11er (2003-08-12 16:26) [19]Digitman
Спасибо. Но это все равно вопроса не снимает... Если исходники поставляются и компилируется, то почему их нельзя использовать?
← →
Digitman (2003-08-12 16:29) [20]ответ на это вопрос вызовет у тебя лавину новых вопросов, судя по уровню знаний
так что брось эту затею - утечки памяти, которые ты, вероятно, пытаешься контролировать, обнаруживаются и безо всех этих ухищрений
← →
Digitman (2003-08-12 16:32) [21]
> ki11er
ну говорят же тебе - не трогай system.pas !)
значит, не трогай) ... лучше объясни внятно, зачем тебе понадобился протокол вызовов конструкторов/деструкторов ? для поиска мемликов или для чего еще ?
← →
ki11er (2003-08-12 16:41) [22]Digitman
> см. run-time-перехват вызовов System.@ClassCreate и System.@ClassDestroy
Что-то не нахожу. Ни в хэлпе, ни в поисковике. Полее точно источник можешь указать?
> значит, не трогай) ...
Не меня такой ответ не устраивает...
> для поиска мемликов или для чего еще ?
Не совсем. Ликов нету... Но со временем количество памяти, используемое программой растет. Одна из идей - протоколировать, каких объектов и сколько создано...
← →
Digitman (2003-08-12 16:48) [23]
> Что-то не нахожу. Ни в хэлпе, ни в поисковике. Полее точно
> источник можешь указать?
источник - поиск по модулю system.pas c моделью "ClassCreate" и "ClassDestroy"
> Не меня такой ответ не устраивает...
Хоть убей - не понимаю почему)
> количество памяти, используемое программой растет.
значит, есть мемлики
← →
ki11er (2003-08-12 16:55) [24]
> источник - поиск по модулю system.pas c моделью "ClassCreate"
> и "ClassDestroy"
Не, ну это я нашел... А дальше что? Как их перехватывать?
> Хоть убей - не понимаю почему)
Потому, что он ничем не обоснован.
> значит, есть мемлики
Нет ;-)
← →
Digitman (2003-08-12 16:56) [25]пойми ты, голова садовая, что перекомпиляция system.pas повлечет за собой перекомпиляцию практически всего, что являет собой Делфи !
это, как минимум, вся VCL и все что на ней завязано !
без перекомпиляции всего остального ты же порушишь как минимум смещения всех точек входов/переходов !
← →
ki11er (2003-08-12 16:59) [26]
> без перекомпиляции всего остального ты же порушишь как минимум
> смещения всех точек входов/переходов !
Что-то мне неверится, что там все так дубово сделано...
Так как перехватывать, светлая голова?
← →
Digitman (2003-08-12 17:02) [27]
> ki11er
> Как их перехватывать?
а это уже - отдельная область спец.знаний по Win32 и защищенному режиму работы CPU. Ты готов бросить все и глубиться на неопределенное время в неведомое тебе на сей день ?
> Потому, что он ничем не обоснован.
Вот именно ! Ничем не обосновано это упрямство - мол, хочу изменить модуль, и все тут !)
> > значит, есть мемлики
>
> Нет ;-)
imnsho, есть)
← →
ki11er (2003-08-12 17:10) [28]
> а это уже - отдельная область спец.знаний по Win32 и защищенному
> режиму работы CPU. Ты готов бросить все и глубиться на неопределенное
> время в неведомое тебе на сей день ?
Во-первых про неведомое ты сильно загнул. Во-вторых "И эти люди запрещают мне в носу ковыряться..." 8-D
> Вот именно ! Ничем не обосновано это упрямство - мол, хочу
> изменить модуль, и все тут !)
"Хочу и все" здесь не при чем. Есть исходник, есть мэйкфайл. Неужели просто так, от сырости?
> imnsho, есть)
хорошо, допустим. как я могу тебе доказать, что нет (или себе, что есть)? Ставлю ящик пива. Только давай сначала определимся, что считать мемликами...
← →
Digitman (2003-08-12 17:11) [29]
> ki11er
при чем здесь "дубово"-то ?
есть, к примеру, понятие "относительное смещение операнда" в маш.инструкциях вызова подпрограмм, условных/безусловных переходов и пр. и пр. ... тебе это о чем-то говорит ?
← →
ki11er (2003-08-12 17:18) [30]
> тебе это о чем-то говорит
говорит.
есть также понятие релокэйшион-таблицы и тому подобные вещи. Тебе это о чем-нибудь напоминает?
Ладно, все. Будем искать в другом месте...
← →
Verg (2003-08-12 17:22) [31]
> Не подключается скомпилированный из исходников
Как подключаешь?
Там, кстати кроме pas, как ты видел еще куча asm-ов...
← →
ki11er (2003-08-12 17:33) [32]
> Как подключаешь?
Переписываю в lib. Насчет асмов - конечно, они все подключаются при компиляции. Скажу больше, похоже в первом слове получившегося dcu лежит какой-то идентификатор, по которому дэлфя и определяет, что файл не родной...
← →
Verg (2003-08-12 17:38) [33]
> Переписываю в lib
Чего-о-о? Эт-сколько? :)
Кто такой lib в delphi, почему не знаю...
← →
Verg (2003-08-12 17:43) [34]А.. доперло - ты это значит все содержимое delphix\source\rtl\sys заливаешь в delphix\lib, а потом alt+p+b?
Слушай, а ты не знаешь для чего там в delphix\Source\rtl\makefile лежит?
← →
ki11er (2003-08-12 17:44) [35]
> Чего-о-о? Эт-сколько? :)
> Кто такой lib в delphi, почему не знаю...
...\Borland\Delphi4\Lib\ - там лежат библиотеки (читай дэкэушки). Странно, что ты этого не знаешь...
← →
Anatoly Podgoretsky (2003-08-12 17:46) [36]Ты их тоже должен оттранслировать, нужен транслятор.
Кроме то если ты би х посмотрет то увидел бы конструкции типа
[reg+N] где N жестко закодировано, это смещение в таблице VMT ну конечно не только оно, у тебя все убежит. А как быть насчет тех модулей, которые Борланд не поставила, что с ними будешь делать?
← →
Verg (2003-08-12 17:48) [37]
> Странно, что ты этого не знаешь...
Странно то, что ты туда вообще полез (не зная броду...)
← →
ki11er (2003-08-12 17:49) [38]
> А.. доперло - ты это значит все содержимое delphix\source\rtl\sys
> заливаешь в delphix\lib, а потом alt+p+b?
> Слушай, а ты не знаешь для чего там в delphix\Source\rtl\makefile
> лежит?
Ты чего, прикалываешься? Ничего я никуда не лью. Компиляю все в src/rtl и потом переписываю получившийся system.dcu в lib.
← →
ki11er (2003-08-12 18:00) [39]Anatoly Podgoretsky
Какие остальные?
Там собирается 4 файла sharemem.dcu, sysinit.dcu, system.dcu и
windows.dcu. Думаю, этого должно быть достаточно...
← →
Verg (2003-08-12 18:08) [40]
> Ты чего, прикалываешься? Ничего я никуда не лью.
не, ну так нельзя. Мы, понимаешь, должны догадываться что (а главное зачем) ты делаешь (по шагам). Приходится высказывать гипотезы, на которые ты изволишь обижаться.
Я в свое время чисто для прикола собрал RTL для D3 и все прошло нормально...
← →
ki11er (2003-08-12 18:15) [41]Не, я не обижаюсь. Говорю еще раз собираю я все нормально. Единственная проблема - windows.dcu не собирается, но это ньюансы, т.к. до него вообще дело не доходит, делфя сразу бракует system.
> Я в свое время чисто для прикола собрал RTL для D3 и все
> прошло нормально...
;-) В 3й версии там прямо в меню было - пересобрать библиотеки. Я сам делал это много раз ;-)
Страницы: 1 2 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.015 c