| 
| 
 | Вопрос # 2 925/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Я столкнулся с такой проблемой - как трассировать DLL в Delphi 2009.
 
 Точки остановы(Break point) при компиляции становятся неактивны (зеленым цветом).
 В Delphi 2007 (CodeGear Rad studio 2007) все нормально
 работает и в Delphi 7 тоже.
 
 Далее - после сравнения настроек debbugers в Delphi ях, в Delphi 2009,  Tools-options-CodeGear Debbugers включил multiple evaluators  галочку.
 Точки остановы(Break point) при компиляции стали активны,
 но при прослеживании dll через (F7) открывается окно CPU.
 Как убрать его? чтобы оно постоянно не выскакивало при трассировки.
 
 В предыдущих версиях Delphi все хорошо работало.
 
 Все опции включены : debug info. и.т.д, build Configuration переключена на Debug, в host application указан exe.
 
 Конфигурация : Windows Vista SP1, CodeGear Rad Studio 2009
 version 12.0.3420.21218 Arhitect.
 
 Прилагаю простой глупый пример кода:
 
 Зарание спасибо.
 Приложение:Переключить в обычный режим   Form unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls; type  TForm1 = class(TForm)    Button1: TButton;    Label1: TLabel;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end; var  Form1: TForm1;  implementation {$R *.dfm}  function Showmy(x, y: integer; z: string) :string ; stdcall;    external 'project1.dll';  procedure TForm1.Button1Click(Sender: TObject);begin Label1.Caption := showmy(3, 10, 'we');end; end.   DLL library Project1; uses  SysUtils,  Classes;  function Showmy(x, y: integer; z: string): string ;stdcall; var a, b : integer; c : string;begin a := 23 + x; b := a + y; c := floattostr(b) + z; Result := c;end;   exports Showmy;  beginend.
|  |   Вопрос задал: Lexxonhack (статус: Посетитель)Вопрос отправлен: 18 июня 2009, 02:58
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 2; последнее сообщение — 18 июня 2009, 19:56; участников в обсуждении: 2. 
|   | Вадим К (статус: Академик), 18 июня 2009, 10:16 [#1]:Написали много всего, но не написали, как именно делаете отладку. По правилам надо держать в делфи открытыми исходники длл, а само приложение указать как host приложение. Таким образом получиться отлаживать длл, но не само приложение. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Lexxonhack (статус: Посетитель), 18 июня 2009, 19:56 [#2]:Я так и делал, листинг DLL я всегда открываю(ctrl+v), и еще открыт Unit1 главной формы, когда трассирую открываю вкладку DLL листинга(где и раставленны Breakpoints), в run -parameters-Debugger-Host applications указываю
 приложение(путь exeшника из project Group который в Project Manager).Эффект тотже получался, даже двумя способами:
 1.нажимаю F7 и жму поочередно,запускается программа (Application.Initialize ,и.т.д),нажимаю кнопку вызова функции из DLL(на главной форме) трассировка переходит на процедуру кнопки Onclick и.т.д далее попадает на external 'Protect.dll' (где мы объявляли функцию которая описана в DLL), потом опять F7 и открывается окно CPU и далее трассируется по ассемблеру.
 
 2.нажимаю F9,запускается программа,нажимаю кнопку на форме,происходит вызов функции,Breakpoint срабатывает (курсор останавливается на Breakpoint в DLL) и опять открывается окно CPU, при его закрытии и после нажатия F7 оно снова вылазит. Вот так.
 
 Кажется я нашел выход из ситуации!!!
 
 Мои действия: Удалил к чертям Rad Studio 2009, почистил реестр и папки врем.файлов от Rad Studio 2009 программами
 
 RegOrganizer 4.23 и WinTools.net Professional 10.1, а также ручками все что осталось от Rad Studio 2009(папки CodeGear) и C:\Windows\assembly даже удалил все что связано с borland. Перезагрузился. Установил снова Rad Studio 2009, в Rad
 Studio 2009 -Tools-options-CodeGear Debbugers поставил галочку multiple evaluators, включил  в Project-Options-
 Linking-Debug information (true), пересобрал DLL и EXE, поставил Break в DLL и скомпилировал. Все заработало как
 надо, CPU не вылазит, нормально трассируется все в листинге DLL.
 
 Возможно причина была вот в чем : когда в Project Manager выбираешь DLL (делаешь активной) и в build Configuration
 переключаешь на Release после компиляции начинает вылазить окно CPU. Но тогда я все проверял, у exe и DLL build
 Configuration была на debug. Возможно глюк!!!  Какое ваше мнение?
 
 Спасибо что ответили на мой вопрос.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |