Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отладка не работает в dll.


Kolan ©   (2005-06-29 11:44:00) 

Здравствуйте,
 Есть проект состоит из формы и dll. Project Manager'ом они обеденины в один проект. Раньше при отладки если функция находилась в модуле dll, то отладчик спокойно туда заходил. Сегодня не заходит. До взова доходит, и проскакивает дальше. Как вернуть отладку всего проекта? Win98 D7


Kolan   (2005-06-29 15:08:00) [1]

Всё наконец-то. Забыл настроить параметры запуска. Интересно без этого ведь работало... а перестало только сейчас. Благодарю за помощь :)


evvcom   (2005-06-29 14:49:00) [2]

exe вызывает точно ту dll, которая только что скомпилилась? Если dll лежит не в той же папке, что и exe, можешь запросто нарваться, что dll грузится, например, из system. Простой тест: открой проект с dll, настрой параметры запуска и поставь бряк в dll. Останавливаешься на бряке?


Kolan   (2005-06-29 14:28:00) [3]

Так всё и стоит во всех проектах группы. Отключил везде оптимизацию. Сделал Билд. Ничего. Ставлю Break Point на функцию внутри dll. Она становится (x). Мож еще чего надо проверить?


Digitman   (2005-06-29 13:40:00) [4]

Compiler -> Debugging :

Debug Information = Yes
Local Symbols = Yes
Reference Info = Yes


Kolan   (2005-06-29 13:36:00) [5]

Навер но дело как раз в этих
> опциях компиляции
так как Build я делал не раз. Не знаете какие именно надо включить чтобы получить такую отладку как я описал. Главное если новую группу создать всё работает...


Digitman   (2005-06-29 13:12:00) [6]


> проект был один состояший из двух


проет не может "состоять из двух", не выдумывай.

если речь идет о группепроектов (bpg), состоящей из ехе-проекта и dll-проекта, то это совсем иное дело

для каждого из проектов в составе группы в его свойствах в опциях компиляции д.б. включены все опции отладки, после чего вся группа д.б. пересобрана (меню Build All Projects)


Eraser   (2005-06-29 13:06:00) [7]

Kolan ©   (29.06.05 12:58) [4]

Если проекты с dll и с нужным exe в разных папках, перед трассировкой ДЛЛ удали её из папки с запускаемым exe.


Kolan   (2005-06-29 12:58:00) [8]

Да нет я ничего не менял. С самого начала функция была в dll. А проект был один состояший из двух(Использовал Project Manager). И структуру программы я не менял. Но трассировка пропала.

Еще пример NEw-> application. Дальше Project Manager -> New Dll Wizard. Пишем ф-цию. в dll
function Pr: Integer; stdcall;
var
 I: Integer;
begin
 I := 1; (*)
 Result := I;
end;
{$R *.res}
exports
 Pr;


В главной форме
function Pr; external 'Project2.dll';

В кнопке
Pr;

Трассируем Все работает и в (*) заходит.

В другом проекте нет. Хотя он также сделан. Только не сейчас а неделю назад я его слделал.


Digitman   (2005-06-29 12:46:00) [9]


> так оно всегда и происходило раньше


потому что ты трассировал код процедуры, находящейся в том же (текущем) отлаживаемом проекте, т.е. exe-проекте, содержащем форму и ту самую кнопку, при нажатии на которую вызывалась эта самая процедура


> А сейяас немогу


а сейчас ты вынес эту процедуру в dll, это совершенно другой проект, не тот который ты отлаживаешь (а отлаживать ты как и раньше продолжаешь exe-проект)

выбирай - либо тебе нужна трассировка кода dll-проекта либо exe-проекта ... при отладке-трассировке Делфи способна использовать исходники лишь того проекта, который в дан.момент открыт.


Kolan   (2005-06-29 12:34:00) [10]

Пример: Нажимаю кнопку там код

EvalConnectionKoeff(...);

Она находится в dll
function EvalConnectionKoeff; external 'KFreGrafCalculationsLib.dll'
 name 'EvalConnectionKoeff';


В dll она выглядит так.
function EvalConnectionKoeff(...): Double;
begin
{...}
end;


Ставлю точку остонова на кнопку. И пошел F7. Сначала попаду на вызов функциивнутри обработчика OnClick. Дальше на вызов функции из dll. А вот дальше я должен попасть на код самой этой функции. Те как бы внутрь dll. И так оно всегда и происходило раньше. А сейяас немогу.


Digitman   (2005-06-29 11:53:00) [11]

где кто у тебя "находится" - совершенно непонятно

иллюстрируй структуру проекта в тексте


Наверх

Титульная страница Поиск, карта сайта Написать письмо