Debugger: Notify if debugged app, exits with error code. Issue #37861

git-svn-id: trunk@63950 -
This commit is contained in:
martin 2020-10-04 14:24:46 +00:00
parent 3baad5d70c
commit 7ab3261e30
19 changed files with 157 additions and 13 deletions

View File

@ -1838,6 +1838,7 @@ type
FRegisters: TRegisterSupplier;
FShowConsole: Boolean;
FSignals: TDBGSignals;
FSkipStopMessage: Boolean;
FState: TDBGState;
FCallStack: TCallStackSupplier;
FWatches: TWatchesSupplier;
@ -1966,6 +1967,7 @@ type
property IsInReset: Boolean read FIsInReset;
procedure AddNotifyEvent(AReason: TDebuggerNotifyReason; AnEvent: TNotifyEvent);
procedure RemoveNotifyEvent(AReason: TDebuggerNotifyReason; AnEvent: TNotifyEvent);
procedure SetSkipStopMessage;
public
property Arguments: String read FArguments write FArguments; // Arguments feed to the program
property BreakPoints: TDBGBreakPoints read FBreakPoints; // list of all breakpoints
@ -1997,6 +1999,7 @@ type
property IsIdle: Boolean read GetIsIdle; // Nothing queued
property ErrorStateMessage: String read FErrorStateMessage;
property ErrorStateInfo: String read FErrorStateInfo;
property SkipStopMessage: Boolean read FSkipStopMessage;
//property UnitInfoProvider: TDebuggerUnitInfoProvider // Provided by DebugBoss, to map files to packages or project
// read GetUnitInfoProvider write FUnitInfoProvider;
// Events
@ -5957,6 +5960,11 @@ begin
FDestroyNotificationList[AReason].Remove(TMethod(AnEvent));
end;
procedure TDebuggerIntf.SetSkipStopMessage;
begin
FSkipStopMessage := True;
end;
class function TDebuggerIntf.SupportedCommandsFor(AState: TDBGState): TDBGCommands;
begin
Result := COMMANDMAP[AState] * GetSupportedCommands;
@ -6407,6 +6415,8 @@ begin
if AValue <> FState
then begin
if AValue <> dsStop then
FSkipStopMessage := False;
DebugLnEnter(DBG_STATE, ['DebuggerState: Setting to ', dbgs(AValue),', from ', dbgs(FState)]);
OldState := FState;
FState := AValue;

View File

@ -5234,9 +5234,47 @@ function TGDBMIDebuggerCommandStartDebugging.DoExecute: Boolean;
StoppedFile, StoppedLine: String;
StoppedAddr: TDBGPtr;
StoppedAtEntryPoint: Boolean;
StateStopped: Boolean;
const
MIN_RELOC_ADDRESS = $4000;
function HandleStartError(R: TGDBMIExecResult): boolean;
var
List: TGDBMINameValueList;
ErrMsg, s: String;
begin
Result := False; // no id found
if R.State <> dsError then
exit;
List := nil;
try
List := TGDBMINameValueList.Create(R);
ErrMsg := List.Values['msg'];
if pos('program exited', ErrMsg) > 0 then begin
Result := True;
s := GetPart(['with code '], ['.'], ErrMsg, True, False);
if s <> '' then begin
FTheDebugger.SetExitCode(StrToIntDef(s, 0));
end;
DoDbgEvent(ecProcess, etProcessExit, Format(gdbmiEventLogProcessExitCode, [IntToStr(FTheDebugger.ExitCode)]));
if FTheDebugger.ExitCode = 0 then begin
FTheDebugger.OnFeedback
(self, Format(gdbmiCommandStartApplicationError, [LineEnding, ErrMsg]),
'', ftInformation, [frOk]);
FTheDebugger.SetSkipStopMessage;
end;
ExecuteCommand('kill', [cfNoThreadContext], 1500);
StateStopped := True;
if FTheDebugger.State = dsStop then
SetDebuggerState(dsNone); // dsInit would trigger breakpoints...
SetDebuggerState(dsStop);
end;
except
end;
List.Free;
end;
procedure RunToMain(EntryPoint: String);
type
TRunToMainType = (mtMain, mtMainAddr, mtEntry, mtAddZero);
@ -5394,10 +5432,14 @@ function TGDBMIDebuggerCommandStartDebugging.DoExecute: Boolean;
DefaultTimeOut := 0;
if not ExecuteCommand(Cmd, R, [cfTryAsync])
then begin
if HandleStartError(R) then
exit;
SetDebuggerErrorState(Format(gdbmiCommandStartMainRunError, [LineEnding]),
ErrorStateInfo);
exit;
end;
if HandleStartError(R) then
exit;
s := r.Values + FLogWarnings;
if TargetInfo^.TargetPID = 0 then begin
TargetInfo^.TargetPID := ParseLogForPid(s);
@ -5415,6 +5457,8 @@ function TGDBMIDebuggerCommandStartDebugging.DoExecute: Boolean;
if (TargetInfo^.TargetPID <> 0) then
FCanKillNow := True;
ProcessRunning(s2, R);
if HandleStartError(R) then
exit;
FCanKillNow := False;
FTheDebugger.FCurrentCmdIsAsync := False;
j := ParseStopped(s2);
@ -5541,7 +5585,6 @@ var
FileType, EntryPoint: String;
List: TGDBMINameValueList;
CanContinue: Boolean;
StateStopped: Boolean;
DbgProp: TGDBMIDebuggerPropertiesBase;
begin
Result := True;

View File

@ -44,6 +44,7 @@ resourcestring
+ 'This may be caused by missing debug info.';
gdbmiCommandStartMainRunError = 'The debugger could not run the application.%0:s'
+ 'This may be caused by missing debug info.';
gdbmiCommandStartApplicationError = 'The application could not be started:%0:s%1s';
gdbmiCommandStartMainRunToStopError = 'The debugger was unable to initialize itself.%0:s'
+ 'The application did run (and terminated) before the debugger could set'
+ ' any breakpoints. %0:s'

View File

@ -19,6 +19,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "El depurador ha detectado un error al intentar ejecutar/paso de la aplicación:%0:s%0:s%1:s%0:s%0:sPulsa \"Aceptar\" para eliminar los puntos de interrupción y continuar con la depuración (en pausa), y corregir el problema, o elegir un comando de arranque alternativo.%0:sPulsa \"Parar\" para finalizar la sesión de depuración."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -21,6 +21,11 @@ msgstr "Débogueur"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Le débogueur a rencontré une erreur en essayant d'exécuter l'application : %0:s%0:s%1:s%0:s%0:sAppuyez sur \"Ok\" pour retirer les points d'arrêt et continuer le débogage (en pause), et corrigez le problème, ou choisissez une commande alternative. %0:sAppuyez sur \"Stop\" pour mettre fin à la session de débogage."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -20,6 +20,11 @@ msgstr "Hibakereső"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "A hibakereső hibát észlelt amikor megpróbálta futtatni/léptetni az alkalmazást:%0:s%0:s%1:s%0:s%0:sAz \"Ok\"-ra nyomva eltávolítja a töréspontot és folytatja a hibakeresés (szünetel) valamint javíthatja a hibát vagy válasszon másik futtatóparancsot.%0:sA \"Stop\"-ra nyomva befejeződik a hibakeresés."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -22,6 +22,11 @@ msgstr "Debugger"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Il debugger ha incontrato un errore nel cercare di eseguire l'applicazione:%0:s%0:s%1:s%0:s%0:sPremere \"Ok\" per rimuovere i breakpoints e continuare il debug (ora in pausa), e correggere il problema, o scegliere un diverso comando di avvio.%0:sPremere \"Stop\" per terminare la sessione di debug."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -21,6 +21,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "デバッガがアプリケーション%0:s%0:s%1:s%0:s%0:sの実行ステップ実行を試みた際にエラーが発生しました。ブレークポイントを削除しデバッグ一時停止を継続する場合は \"Ok\" を押し、問題を修正し、あるいは別の実行コマンドを選択してください。%0:sデバッグセッションを終了する場合は \"停止\" を押してください。"
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -22,6 +22,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Derintuvei vykdant programą ar darant joje žingsnį įvyko klaida:%0:s%0:s%1:s%0:s%0:sPaspaudus „Tinka“ bus pašalinti stabdos taškai ir tęsiamas derinimas (pristabdytas), tai leis pašalinti problemą arba pasirinkti alternatyvią vykdymo komandą.%0:sPaspaudus „Stabdyti“ derinimo seansas bus baigtas."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -10,6 +10,11 @@ msgstr ""
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr ""
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -21,6 +21,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "O depurador encontrou um erro ao tentar executar/passo a passo a aplicação:%0:s%0:s%1:s%0:s%0:sPressione \"Ok\" para remover os pontos de parada e continuar depurando (pausado), e corrigir o problema, ou escolha um comando alternativo para executar%0:sPressione \"Parar\" para encerrar a sessão de depuração."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -21,6 +21,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Возникла ошибка отладчика при попытке запустить/сделать шаг в приложении:%0:s%0:s%1:s%0:s%0:sНажмите \"ОК\" для удаления точек останова и продолжения отладки (приостановлена), и затем исправьте проблему, или выберите другую команду запуска.%0:sНажмите \"Остановить\", чтобы закончить отладку."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -20,6 +20,11 @@ msgstr "Hata ayıklayıcı"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Hata ayıklayıcı, uygulamayı çalıştırmaya / adımlandırmaya çalışırken bir hatayla karşılaştı:%0:s%0:s%1:s%0:s%0:s Kesme noktalarını kaldırmak ve hata ayıklamaya devam etmek (duraklatıldı) ve \"Tamam\" tuşuna basın. sorunu düzeltin veya alternatif bir çalıştırma komutu seçin.%0:s Hata ayıklama oturumunu sonlandırmak için \"Durdur\" düğmesine basın."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -22,6 +22,11 @@ msgctxt "gdbmistringconstants.gdbmibreakpointerroronruncommand"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "Зневаджувач зазнав помилки під час спроби запуску/проходу програми:%0:s%0:s%1:s%0:s%0:sНатисніть \"Гаразд\", щоб видалити точки зупинки і продовжити зневаджування (пауза), і виправити проблему, або виберіть альтернативну команду запуску.%0:sНатисніть \"Закінчити\" для закінчення сеансу зневаджування."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgctxt "gdbmistringconstants.gdbmicommandstartmainbreakerror"

View File

@ -21,6 +21,11 @@ msgstr "调试器"
msgid "The debugger encountered an error when trying to run/step the application:%0:s%0:s%1:s%0:s%0:sPress \"Ok\" to remove the breakpoints and continue debugging (paused), and correct the problem, or choose an alternative run command.%0:sPress \"Stop\" to end the debug session."
msgstr "调试器遇到一个错误 在尝试运行/停止应用程序时:%0:s%0:s%1:s%0:s%0:s按\"Ok\"移除断点并继续调试(暂停),改正错误,或选择一个其他的运行命令.%0:s按\"Stop\"结束调试会话."
#: gdbmistringconstants.gdbmicommandstartapplicationerror
#, object-pascal-format
msgid "The application could not be started:%0:s%1s"
msgstr ""
#: gdbmistringconstants.gdbmicommandstartmainbreakerror
#, object-pascal-format
msgid "The debugger could not set a breakpoint on the application's entry point.%0:sThis may be caused by missing debug info."

View File

@ -83,8 +83,9 @@ procedure TDebuggerGeneralOptionsFrame.FetchDebuggerGeneralOptions;
begin
// IMPORTANT if more items are added the indexes must be updated here!
gcbDebuggerGeneralOptions.Checked[0] := EnvironmentOptions.DebuggerShowStopMessage;
gcbDebuggerGeneralOptions.Checked[1] := EnvironmentOptions.DebuggerResetAfterRun;
gcbDebuggerGeneralOptions.Checked[2] := EnvironmentOptions.DebuggerAutoCloseAsm;
gcbDebuggerGeneralOptions.Checked[1] := EnvironmentOptions.DebuggerShowExitCodeMessage;
gcbDebuggerGeneralOptions.Checked[2] := EnvironmentOptions.DebuggerResetAfterRun;
gcbDebuggerGeneralOptions.Checked[3] := EnvironmentOptions.DebuggerAutoCloseAsm;
txtAdditionalPath.Text:=EnvironmentOptions.GetParsedDebuggerSearchPath;
end;
@ -103,6 +104,7 @@ begin
gbAdditionalSearchPath.Caption := lisDebugOptionsFrmAdditionalSearchPath;
gcbDebuggerGeneralOptions.Caption := lisDebugOptionsFrmDebuggerGeneralOptions;
gcbDebuggerGeneralOptions.Items.Add(lisDebugOptionsFrmShowMessageOnStop);
gcbDebuggerGeneralOptions.Items.Add(lisDebugOptionsFrmShowExitCodeOnStop);
gcbDebuggerGeneralOptions.Items.Add(lisDebugOptionsFrmResetDebuggerOnEachRun);
gcbDebuggerGeneralOptions.Items.Add(lisDebugOptionsFrmAutoCloseAsm);
end;
@ -123,9 +125,10 @@ begin
begin
DebuggerSearchPath := TrimSearchPath(txtAdditionalPath.Text,'');
// IMPORTANT if more items are added the indexes must be updated here!
DebuggerShowStopMessage := gcbDebuggerGeneralOptions.Checked[0];
DebuggerResetAfterRun := gcbDebuggerGeneralOptions.Checked[1];
DebuggerAutoCloseAsm := gcbDebuggerGeneralOptions.Checked[2];
DebuggerShowStopMessage := gcbDebuggerGeneralOptions.Checked[0];
DebuggerShowExitCodeMessage := gcbDebuggerGeneralOptions.Checked[1];
DebuggerResetAfterRun := gcbDebuggerGeneralOptions.Checked[2];
DebuggerAutoCloseAsm := gcbDebuggerGeneralOptions.Checked[3];
end;
end;

View File

@ -1444,13 +1444,29 @@ begin
if (OldState<>dsIdle)
then begin
MainIDE.DoCallRunFinishedHandler;
if EnvironmentOptions.DebuggerShowStopMessage
then begin
MsgResult:=IDEQuestionDialog(lisExecutionStopped, lisExecutionStopped,
mtInformation, [mrOK, lisMenuOk,
mrYesToAll, lisDoNotShowThisMessageAgain], '');
if MsgResult=mrYesToAll then
EnvironmentOptions.DebuggerShowStopMessage:=false;
if not FDebugger.SkipStopMessage then begin
if (FDebugger.ExitCode <> 0) and EnvironmentOptions.DebuggerShowExitCodeMessage then begin
i := 4;
if FDebugger.ExitCode > 65535 then
i := 8;
{$PUSH}{$R-}
MsgResult:=IDEQuestionDialog(lisExecutionStopped,
Format(lisExecutionStoppedExitCode, [LineEnding+'', FDebugger.ExitCode, IntToHex(FDebugger.ExitCode, i)]),
mtInformation, [mrOK, lisMenuOk,
mrYesToAll, lisDoNotShowThisMessageAgain], '');
{$POP}
if MsgResult=mrYesToAll then
EnvironmentOptions.DebuggerShowExitCodeMessage:=false;
end
else
if EnvironmentOptions.DebuggerShowStopMessage
then begin
MsgResult:=IDEQuestionDialog(lisExecutionStopped, lisExecutionStopped,
mtInformation, [mrOK, lisMenuOk,
mrYesToAll, lisDoNotShowThisMessageAgain], '');
if MsgResult=mrYesToAll then
EnvironmentOptions.DebuggerShowStopMessage:=false;
end;
end;
if EnvironmentOptions.DebuggerResetAfterRun or FDebugger.NeedReset then
@ -2085,6 +2101,10 @@ begin
if FDebugger <> nil then begin
AvailCommands := FDebugger.Commands;
CurState := FDebugger.State;
if CurState = dsError then begin
CurState := dsStop;
AvailCommands := GetDebuggerClass.SupportedCommandsFor(dsStop);
end;
end
else begin
AvailCommands := GetDebuggerClass.SupportedCommandsFor(dsStop);

View File

@ -542,6 +542,7 @@ type
XML_PATH_DEBUGGER_CONF_OLD = 'EnvironmentOptions/Debugger/Class%s/%s/';
private
FCurrentDebuggerPropertiesConfig: TDebuggerPropertiesConfig;
FDebuggerShowExitCodeMessage: boolean;
FHasActiveDebuggerEntry: Boolean;
fRegisteredSubConfig: TObjectList;
FDebuggerAutoCloseAsm: boolean;
@ -904,6 +905,7 @@ type
property DebuggerFileHistory[AnIndex: String]: TStringList read GetNamedDebuggerFileHistory;
property DebuggerSearchPath: string read GetDebuggerSearchPath write SetDebuggerSearchPath;
property DebuggerShowStopMessage: boolean read FDebuggerShowStopMessage write FDebuggerShowStopMessage;
property DebuggerShowExitCodeMessage: boolean read FDebuggerShowExitCodeMessage write FDebuggerShowExitCodeMessage;
property DebuggerResetAfterRun: boolean read FDebuggerResetAfterRun write FDebuggerResetAfterRun;
property DebuggerAutoCloseAsm: boolean read FDebuggerAutoCloseAsm write FDebuggerAutoCloseAsm;
property FppkgConfigFile: string read GetFppkgConfigFile write SetFppkgConfigFile;
@ -2464,6 +2466,7 @@ begin
DebuggerSearchPath:=FXMLCfg.GetValue(Path+'DebuggerSearchPath/Value','');
// Debugger General Options
DebuggerShowStopMessage:=FXMLCfg.GetValue(Path+'DebuggerOptions/ShowStopMessage/Value', True);
DebuggerShowExitCodeMessage:=FXMLCfg.GetValue(Path+'DebuggerOptions/DebuggerShowExitCodeMessage/Value', True);
DebuggerResetAfterRun :=FXMLCfg.GetValue(Path+'DebuggerOptions/DebuggerResetAfterRun/Value', False);
FDebuggerAutoCloseAsm :=FXMLCfg.GetValue(Path+'DebuggerOptions/DebuggerAutoCloseAsm/Value', False);
FDebuggerEventLogClearOnRun := FXMLCfg.GetValue(Path+'Debugger/EventLogClearOnRun', True);
@ -2855,6 +2858,8 @@ begin
SaveDebuggerPropertiesList;
FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/ShowStopMessage/Value',
FDebuggerShowStopMessage, True);
FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/DebuggerShowExitCodeMessage/Value',
FDebuggerShowExitCodeMessage, True);
FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/DebuggerResetAfterRun/Value',
FDebuggerResetAfterRun, False);
FXMLCfg.SetDeleteValue(Path+'DebuggerOptions/DebuggerAutoCloseAsm/Value',

View File

@ -4175,6 +4175,7 @@ resourcestring
+'%sSave your work now !'
+'%sHit Stop, and hope the best, we''re pulling the plug.';
lisExecutionStopped = 'Execution stopped';
lisExecutionStoppedExitCode = 'Execution stopped with exit-code %1:d ($%2:s)';
lisFileNotFound = 'File not found';
lisDisableOptionXg = 'Disable Option -Xg?';
lisTheProjectWritesTheDebugSymbolsToAnExternalFileThe = 'The project writes '
@ -5399,6 +5400,7 @@ resourcestring
lisDebugOptionsFrmAdditionalSearchPath = 'Additional search path';
lisDebugOptionsFrmDebuggerGeneralOptions = 'Debugger general options';
lisDebugOptionsFrmShowMessageOnStop = 'Show message on stop';
lisDebugOptionsFrmShowExitCodeOnStop = 'Show message on stop with Error (Exit-code <> 0)';
lisDebugOptionsFrmResetDebuggerOnEachRun = 'Reset Debugger after each run';
lisDebugOptionsFrmAutoCloseAsm = 'Automatically close the assembler window, after source not found';
lisDebugOptionsFrmDebuggerSpecific = 'Debugger specific options (depends on '