Merged revision(s) 61067-61068 #dfcb3321a3-#dfcb3321a3, 61097-61098 #03251f0bde-#03251f0bde, 61178-61180 #8894d42fe2-#8894d42fe2, 61182 #9adb6cf878, 61237 #09eb2b9368 from trunk:

LazDebuggerGdbmi: Improve whitelisted commands for memory limit
........
LazDebuggerGdbmi: Improve "Reset Debugger". Ensure timeouts, if certain options lead to endless waiting.
........
Treeview: Fix smooth scrolling. Items scrolling in could have 1 pixel line duplicated or missing. See detailed explanation at revision 59650 #235888a37d
........
Ide ColorOptions, Treeview: Fix smooth scrolling. Items scrolling in could have 1 pixel line duplicated or missing. See detailed explanation at revision 59650 #235888a37d
........
Installer, Win: Add open-ssl libraries for OPM
........
Installer, Win: Refine install options for qt4pas.dll
........
Installer, Win: Add qt5pas.dll
........
Installer, Win: Only run in 64bit mode, if installing Lazarus for 64bit
........
Installer, Win: Include all ppu
........

git-svn-id: branches/fixes_2_0@61357 -
This commit is contained in:
martin 2019-06-11 16:08:06 +00:00
parent 0b26945778
commit 9a272ef64b
11 changed files with 167 additions and 38 deletions

View File

@ -1804,6 +1804,7 @@ type
FExitCode: Integer;
FExternalDebugger: String;
FFileName: String;
FIsInReset: Boolean;
FLocals: TLocalsSupplier;
FLineInfo: TDBGLineInfo;
//FUnitInfoProvider, FInternalUnitInfoProvider: TDebuggerUnitInfoProvider;
@ -1933,7 +1934,9 @@ type
function GetLocation: TDBGLocationRec; virtual;
procedure LockCommandProcessing; virtual;
procedure UnLockCommandProcessing; virtual;
procedure BeginReset; virtual;
function NeedReset: Boolean; virtual;
property IsInReset: Boolean read FIsInReset;
procedure AddNotifyEvent(AReason: TDebuggerNotifyReason; AnEvent: TNotifyEvent);
procedure RemoveNotifyEvent(AReason: TDebuggerNotifyReason; AnEvent: TNotifyEvent);
public
@ -5871,6 +5874,11 @@ begin
// nothing
end;
procedure TDebuggerIntf.BeginReset;
begin
FIsInReset := True;
end;
function TDebuggerIntf.NeedReset: Boolean;
begin
Result := False;

View File

@ -972,6 +972,7 @@ type
procedure Init; override; // Initializes external debugger
procedure Done; override; // Kills external debugger
procedure BeginReset; override;
function GetLocation: TDBGLocationRec; override;
function GetProcessList({%H-}AList: TRunningProcessInfoList): boolean; override;
@ -7805,6 +7806,13 @@ begin
end;
end;
procedure TGDBMIDebugger.BeginReset;
begin
inherited BeginReset;
FInstructionQueue.ForceTimeOutAll(500);
ReadLine(True, 1);
end;
function TGDBMIDebugger.GetLocation: TDBGLocationRec;
begin
Result := FCurrentLocation;
@ -10639,6 +10647,8 @@ end;
procedure TGDBMIDebuggerCommand.SetDebuggerErrorState(const AMsg: String;
const AInfo: String);
begin
if FTheDebugger.IsInReset then
exit;
FTheDebugger.SetErrorState(AMsg, AInfo);
end;
@ -10756,6 +10766,8 @@ begin
if (ATimeOut = -1) and (DefaultTimeOut > 0)
then ATimeOut := DefaultTimeOut;
if FTheDebugger.IsInReset then
ATimeOut := 500;
try
DoLockQueueExecuteForInstr;
@ -10785,13 +10797,41 @@ begin
Instr.ApplyArrayLenLimit(DebuggerProperties.MaxLocalsLengthForStaticArray);
end
else
if not( (pos('-exec-', ACommand) = 1) or
(pos('-break-', ACommand) = 1) or
(pos('-data-list-register-', ACommand) = 1) or
(pos('-data-list-changed-registers', ACommand) = 1) or
(pos('-data-disassemble', ACommand) = 1) or
(pos('-data-read-memory', ACommand) = 1) or
(pos('-gdb-exit', ACommand) = 1)
if not( (Length(ACommand) < 2) or
( (ACommand[1] = '-') and (
( (ACommand[2] = 'd') and (
(pos('-data-list-register-', ACommand) = 1) or
(pos('-data-list-changed-registers', ACommand) = 1) or
(pos('-data-disassemble', ACommand) = 1) or
(pos('-data-read-memory', ACommand) = 1)
)) or
( (ACommand[2] = 'g') and (
(pos('-gdb-version ', ACommand) = 1) or
(pos('-gdb-set ', ACommand) = 1) or
(pos('-gdb-exit', ACommand) = 1)
)) or
( (not(ACommand[2] in ['d', 'g'])) and (
(pos('-exec-', ACommand) = 1) or
(pos('-file-exec-', ACommand) = 1) or
(pos('-break-', ACommand) = 1)
))
)) or
( (ACommand[1] = 'i') and (
(pos('info line', ACommand) = 1) or
(pos('info address', ACommand) = 1) or
(pos('info pid', ACommand) = 1) or
(pos('info proc', ACommand) = 1) or
(pos('info function', ACommand) = 1) or
(pos('interrupt', ACommand) = 1) or
(pos('info program', ACommand) = 1)
)) or
( (ACommand[1] = 's') and (
(pos('set ', ACommand) = 1) or
(pos('show ', ACommand) = 1)
)) or
( (ACommand[1] = 'm') and (
(pos('maint ', ACommand) = 1)
))
)
then begin
Instr.ApplyMemLimit(DebuggerProperties.GdbValueMemLimit);

View File

@ -257,6 +257,7 @@ type
procedure SetKnownThread(AThread: Integer);
procedure SetKnownThreadAndFrame(AThread, AFrame: Integer);
procedure RunInstruction(AnInstruction: TGDBInstruction); // Wait for instruction to be finished, not queuing
procedure ForceTimeOutAll(ATimeOut: Integer);
property CurrentThreadId: Integer read FCurrentThreadId;
property CurrentStackFrame: Integer read FCurrentStackFrame;
property Flags: TGDBInstructionQueueFlags read FFlags;
@ -1022,6 +1023,8 @@ begin
break;
end;
if FDebugger.ReadLineTimedOut then begin
if FDebugger.IsInReset then
break;
NewInstr := FCurrentInstruction.GetTimeOutVerifier;
if NewInstr <> nil then begin
NewInstr.AddReference;
@ -1153,6 +1156,12 @@ begin
FinishCurrentInstruction;
end;
procedure TGDBInstructionQueue.ForceTimeOutAll(ATimeOut: Integer);
begin
if FCurrentInstruction <> nil then
FCurrentInstruction.FTimeOut := ATimeOut;
end;
initialization
DBGMI_TIMEOUT_DEBUG := DebugLogger.FindOrRegisterLogGroup('DBGMI_TIMEOUT_DEBUG' {$IFDEF DBGMI_TIMEOUT_DEBUG} , True {$ENDIF} );
DBG_THREAD_AND_FRAME := DebugLogger.FindOrRegisterLogGroup('DBG_THREAD_AND_FRAME' {$IFDEF DBG_THREAD_AND_FRAME} , True {$ENDIF} );

View File

@ -2327,6 +2327,7 @@ begin
OldState := State;
if OldState = dsNone then Exit;
FDebugger.BeginReset;
EndDebugging;
// OnDebuggerChangeState(FDebugger, OldState);
// InitDebugger;

View File

@ -260,7 +260,7 @@ begin
end;
NodeRect := Node.DisplayRect(true);
FullAbcWidth := TheTree.Canvas.TextExtent(COLOR_NODE_PREFIX).cx;
TextY := (NodeRect.Top + NodeRect.Bottom - TheTree.Canvas.TextHeight(Node.Text)) div 2;
TextY := NodeRect.Top + (NodeRect.Bottom - NodeRect.Top - TheTree.Canvas.TextHeight(Node.Text)) div 2;
TheTree.Canvas.FillRect(NodeRect);
TheTree.Canvas.TextOut(NodeRect.Left+FullAbcWidth, TextY, copy(Node.Text, 1+length(COLOR_NODE_PREFIX), MaxInt)); // Attri.Name);
@ -381,7 +381,7 @@ begin
TheTree.Canvas.Font.Color := c;
TheTree.Canvas.Font.Style := Attri.Style;
TheTree.Canvas.Font.Height := -(NodeRect.Bottom - NodeRect.Top - 7);
TextY := (NodeRect.Top + NodeRect.Bottom - canvas.TextHeight(s)) div 2;
TextY := NodeRect.Top + (NodeRect.Bottom - NodeRect.Top - canvas.TextHeight(s)) div 2;
AbcWidth := TheTree.Canvas.TextExtent(s).cx;
SetBkMode(TheTree.Canvas.Handle, TRANSPARENT);
TheTree.Canvas.TextOut(NodeRect.Left+(FullAbcWidth - AbcWidth) div 2, TextY, s);

View File

@ -3961,7 +3961,7 @@ begin
if ANode<>nil then
begin
NodeRect:=ANode.DisplayRect(false);
NodeMidY:=(NodeRect.Top+NodeRect.Bottom) div 2;
NodeMidY:=NodeRect.Top + (NodeRect.Bottom-NodeRect.Top) div 2;
AnInsertMarkNode:=ANode;
if (X>AnInsertMarkNode.DisplayExpandSignRight) then
if Y>=NodeMidY then begin
@ -5283,7 +5283,7 @@ begin
if not CustomDrawItem(Node, DrawState, cdPrePaint, PaintImages) then Exit;
end;
VertMid := (NodeRect.Top + NodeRect.Bottom) div 2;
VertMid := NodeRect.Top + (NodeRect.Bottom - NodeRect.Top) div 2;
HasExpandSign := ShowButtons and Node.HasChildren and ((tvoShowRoot in Options) or (Node.Parent <> nil));
VertDelta := Ord(FDefItemHeight and 3 = 2);
//DebugLn(['[TCustomTreeView.DoPaintNode] Node=',DbgS(Node),' Node.Text=',Node.Text,' NodeRect=',NodeRect.Left,',',NodeRect.Top,',',NodeRect.Right,',',NodeRect.Bottom,' VertMid=',VertMid]);
@ -5310,7 +5310,7 @@ begin
if (Node.StateIndex >= 0) and (Node.StateIndex < StateImages.Count) then
begin
if PaintImages then
StateImageRes.Draw(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - StateImageRes.Height) div 2,
StateImageRes.Draw(Canvas, x + 1, NodeRect.Top +(NodeRect.Bottom - NodeRect.Top - StateImageRes.Height) div 2,
Node.StateIndex, True);
Inc(x, StateImageRes.Width + FDefItemSpace);
end;
@ -5336,21 +5336,21 @@ begin
if (Node.OverlayIndex >= 0) then begin
OverlayIndex:=Node.OverlayIndex;
if Images.HasOverlays then begin
ImageRes.DrawOverlay(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - ImageRes.Height) div 2,
ImageRes.DrawOverlay(Canvas, x + 1, NodeRect.Top + (NodeRect.Bottom - NodeRect.Top - ImageRes.Height) div 2,
ImgIndex, OverlayIndex, Node.FNodeEffect);
end else begin
// draw the Overlay using the image from the list
// set an Overlay
Images.OverLay(OverlayIndex,0);
// draw overlay
ImageRes.DrawOverlay(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - ImageRes.Height) div 2,
ImageRes.DrawOverlay(Canvas, x + 1, NodeRect.Top + (NodeRect.Bottom - NodeRect.Top - ImageRes.Height) div 2,
ImgIndex, 0, Node.FNodeEffect);
// reset the Overlay
Images.OverLay(-1,0);
end;
end
else begin
ImageRes.Draw(Canvas, x + 1, (NodeRect.Top + NodeRect.Bottom - ImageRes.Height) div 2,
ImageRes.Draw(Canvas, x + 1, NodeRect.Top + (NodeRect.Bottom - NodeRect.Top - ImageRes.Height) div 2,
ImgIndex, Node.FNodeEffect);
end;
end;

View File

@ -26,16 +26,16 @@ rem %MAKEEXE% lazbuild OPT="-Xs -XX" PP=%COMPILER% >> %LOGFILE%
%FPCBINDIR%\strip.exe tools\svn2revisioninc.exe
%FPCBINDIR%\strip.exe components\chmhelp\lhelp\lhelp.exe
%FPCBINDIR%\rm -rf %BUILDDIR%\components\chmhelp\lhelp\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\codetools\units\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\macroscript\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\PascalScript\Source\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\ideintf\units\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\chmhelp\packages\help\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\externhelp\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\jcf2\IdePlugin\lazarus\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\leakview\lib\*
%FPCBINDIR%\rm -rf %BUILDDIR%\components\synedit\design\units\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\chmhelp\lhelp\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\codetools\units\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\macroscript\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\PascalScript\Source\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\ideintf\units\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\chmhelp\packages\help\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\externhelp\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\jcf2\IdePlugin\lazarus\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\leakview\lib\*
rem %FPCBINDIR%\rm -rf %BUILDDIR%\components\synedit\design\units\*
%OLDCURDRIVE%
cd %OLDCURDIR%

View File

@ -109,10 +109,21 @@ SET PATCHDIR=%CD%\..\patches
:: it should have the debugger with the name gdb.exe in its bin subdirectory
SET GDBDIR=%LAZSVNBINDIR%\%FPCFULLTARGET%\gdb
:: OPENSSL
SET OPENSSLDIR=%LAZSVNBINDIR%\%FPCFULLTARGET%\openssl
for /F %%i in ('dir /b "%OPENSSLDIR%\*.*"') do (
SET HASOPENSSL=1
)
:: Path to the directory containing the qtinf dll matching the qt4.pas from
:: http://users.pandora.be/Jan.Van.hijfte/qtforfpc/fpcqt4.html
SET QTINFDIR=%LAZSVNBINDIR%\%FPCFULLTARGET%\qt
SET QT5INFDIR=%LAZSVNBINDIR%\%FPCFULLTARGET%\qt5
for /F %%i in ('dir /b "%QT5INFDIR%\*.*"') do (
SET HASQT5=1
)
::---------------------------------------------------------------------
FOR /F %%L IN ('%FPCBINDIR%\gdate.exe +%%Y%%m%%d') DO SET DATESTAMP=%%L
SET BUILDDRIVE=%BUILDDIR:~,2%

View File

@ -6,8 +6,13 @@
DelUserConf=Lösche alle Benutzer-Konfigurationsdateien von vorherigen Installationen
CleanUp=Aufräumen
InstallQt=QT-Interface-DLL global installieren
InstallQtLocal=QT4-Interface-DLL installieren
InstallQt=QT4-Interface-DLL global installieren
InstallQt5Local=QT5-Interface-DLL installieren
InstallQt5Global=QT5-Interface-DLL global installieren
InstallChm=CHM-Hilfedateien installieren
InstallOpenSSL=Openssl dll installieren (Benötigt für den Online-Packet-Manager)
InstallOpenSSLGlobal=Openssl dll global installieren
AssociateGroup=Dateierweiterungen registrieren
FolderHasSpaces=Gewählter Ordner enthält Leerzeichen, bitte wählen Sie einen Ordner ohne Leerzeichen.

View File

@ -6,8 +6,13 @@
DelUserConf=Delete all user configuration files from previous installs
CleanUp=Clean up:
InstallQt=Globally install Qt interface DLL
InstallQtLocal=Install Qt4 interface DLL
InstallQt=Globally install Qt4 interface DLL
InstallQt5Local=Install Qt5 interface DLL
InstallQt5Global=Globally install Qt5 interface DLL
InstallChm=Install CHM help files
InstallOpenSSL=Install openssl libraries (required by OnlinePackageManager)
InstallOpenSSLGlobal=Globally Install openssl libraries
AssociateGroup=Associate file extensions
CheckSecondClick=Create a new secondary installation

View File

@ -15,11 +15,16 @@ EnableISX=true
#endif
#define FPCVersion GetEnv('FPCVersion')
#define FPCTargetOS GetEnv('FPCTargetOS')
#define FPCTargetCPU GetEnv('FPCTARGETCPU')
#define FPCFullTarget GetEnv('FPCFullTarget')
#define AppName "Lazarus"
#define SetupDate GetEnv('DateStamp')
#define BuildDir GetEnv('BuildDir')
#define QtInfDir GetEnv('QTINFDIR')
#define HasQT5 GetEnv('HASQT5')
#define Qt5InfDir GetEnv('QT5INFDIR')
#define HasOpenSSL GetEnv('HASOPENSSL')
#define OpenSSLDir GetEnv('OPENSSLDIR')
#define IDEWidgetSet GetEnv('IDE_WidgetSet')
#define OutputFileName GetEnv('OutputFileName')
#define CHMHELPFILES GetEnv('CHMHELPFILES')
@ -34,7 +39,9 @@ AppPublisher=Lazarus Team
AppPublisherURL=http://www.lazarus.freepascal.org/
AppSupportURL=http://www.lazarus.freepascal.org/
AppUpdatesURL=http://www.lazarus.freepascal.org/
#if FPCTargetCPU=="x86_64"
ArchitecturesInstallIn64BitMode=x64
#endif
DefaultDirName={code:GetDefDir|{sd}\lazarus}
DefaultGroupName={#AppName}
AppendDefaultDirName=no
@ -65,22 +72,45 @@ UninstallDisplayIcon={app}\lazarus.exe
DisableWelcomePage=no
DisableDirPage=no
[Tasks]
Name: desktopicon; Description: {cm:CreateDesktopIcon}; GroupDescription: {cm:AdditionalIcons}; Flags: unchecked
Name: delusersettings; Description: {cm:DelUserConf}; GroupDescription: {cm:CleanUp}; Flags: unchecked
;unchecked checkedonce
[Components]
#if FPCTargetOS=="win32"
#if IDEWidgetSet!="qt"
Name: installqtintfdll; Description: {cm:InstallQt}; Types: custom full compact
#endif
#endif
#ifdef CHMHELPFILES
#if CHMHELPFILES!=""
Name: installhelp; Description: {cm:InstallChm}; Types: custom full
#endif
#endif
#if FPCTargetOS=="win32"
;// #if IDEWidgetSet!="qt"
Name: install4qtintfdll; Description: {cm:InstallQtLocal}; Types: custom full; Flags: checkablealone
;// #else
;//Name: install4qtintfdll; Description: {cm:InstallQtLocal}; Types: custom full compact; Flags: checkablealone fixed
;// #endif
Name: install4qtintfdll/global; Description: {cm:InstallQt}; Types: full; Flags: dontinheritcheck
#endif
#ifdef HasQT5
#if HasQT5!=""
#if IDEWidgetSet!="qt"
Name: install5qtintfdll; Description: {cm:InstallQt5Local}; Types: custom full; Flags: checkablealone
#else
Name: install5qtintfdll; Description: {cm:InstallQt5Local}; Types: custom full compact; Flags: checkablealone fixed
#endif
Name: install5qtintfdll/global; Description: {cm:InstallQt5Global}; Types: full; Flags: dontinheritcheck
#endif
#endif
#ifdef HasOpenSSL
#if HasOpenSSL!=""
Name: installopenssl; Description: {cm:InstallOpenSSL}; Types: custom full compact; Flags: checkablealone
Name: installopenssl/global; Description: {cm:InstallOpenSSLGlobal}; Types: full; Flags: dontinheritcheck
#endif
#endif
Name: association; Description: {cm:AssociateGroup}; Types: custom full
Name: association/associatelfm; Description: {code:GetAssociateDesc|.lfm}; Types: custom full
Name: association/associatelpi; Description: {code:GetAssociateDesc|.lpi}; Types: custom full
@ -111,21 +141,41 @@ Name: {code:GetPCPForDelete}userschemes\*.xml; Type: files; Tasks: delusersettin
[Files]
Source: {#BuildDir}\*.*; DestDir: {app}; Flags: recursesubdirs
Source: environmentoptions.xml; DestDir: {app}; AfterInstall: UpdateEnvironmentOptions; DestName: environmentoptions.xml
#if FPCTargetOS=="win32"
#if IDEWidgetSet=="qt"
Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion
#else
Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion; Components: installqtintfdll; Tasks:
#endif
Source: {#QtInfDir}\*.dll; DestDir: {app}
;//#if IDEWidgetSet=="qt"
;//Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion
;//#else
Source: {#QtInfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion; Components: install4qtintfdll/global
;//#endif
Source: {#QtInfDir}\*.dll; DestDir: {app}; Components: install4qtintfdll
#if FPCVersion=="2.2.0"
Source: {#BuildDir}\fpc\{#FPCVersion}\bin\{#FPCFullTarget}\cpp.exe; DestDir: {app}\ide; MinVersion: 1,0
#endif
#endif
#ifdef HasQT5
#if HasQT5!=""
#if IDEWidgetSet=="qt"
Source: {#Qt5InfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion
#else
Source: {#Qt5InfDir}\*.dll; DestDir: {sys}; Flags: sharedfile replacesameversion; Components: install5qtintfdll/global
#endif
Source: {#Qt5InfDir}\*.dll; DestDir: {app}; Components: install5qtintfdll
#endif
#endif
#ifdef CHMHELPFILES
#if CHMHELPFILES!=""
Source: {#CHMHELPFILES}\*.*; DestDir: {app}\docs\chm; Components: installhelp; Flags: recursesubdirs
Source: {#CHMHELPFILES}\*.*; DestDir: {app}\docs\chm; Components: installhelp; Flags: recursesubdirs
#endif
#endif
#ifdef HasOpenSSL
#if HasOpenSSL!=""
Source: {#OpenSSLDir}\*.*; DestDir: {app}; Components: installopenssl; Flags: recursesubdirs
Source: {#OpenSSLDir}\*.*; DestDir: {sys}; Components: installopenssl/global; Flags: sharedfile replacesameversion
#endif
#endif