![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Отладка не работает в 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]где кто у тебя "находится" - совершенно непонятно
иллюстрируй структуру проекта в тексте