Ошибки памяти под дебаггером

SHS_SHS
Дата: 03.01.2020 13:41:52
Доброго времени суток.
В программе есть простой скриптовый язык, и есть простенький дебаггер к нему. И в режиме паузы можно получить значение переменных или полей/свойств объектов. При этом получении программа может вернуть ошибку "Access violation at address....". Данная область экранирована в try/except. И если запускать встроенный дебаггер под дебаггером D2010, то эта ошибка постоянно вылазит. Отключить все подобные ошибки можно, но это не выход. Может есть какой-то способ запретить вывод этой ошибки под дебаггером Delphi именно для этого участка кода?
Dimitry Sibiryakov
Дата: 03.01.2020 13:49:29

Пофиксить её - совсем не вариант?..

Posted via ActualForum NNTP Server 1.5

DimaBr
Дата: 03.01.2020 14:03:06
SHS_SHS
Может есть какой-то способ запретить вывод этой ошибки под дебаггером Delphi именно для этого участка кода?

Создать новый класс ошибки и отключить его в дебагере
SHS_SHS
Дата: 03.01.2020 14:08:54
Была такая мысль ). Все возможные (известные нам) варианты получения значений уже обработаны, для всех остальных просто обращение к памяти. Отсюда и ошибка. Можно попробовать еще более глубоко разобраться, но просто нет на это времени, проще пока оставить экранирование.
SHS_SHS
Дата: 03.01.2020 14:19:55
DimaBr
Создать новый класс ошибки и отключить его в дебагере

Ошибка памяти никуда не денется.
type
  EError = class(Exception);

procedure TForm1.FormCreate(Sender: TObject);
var
  aList: TList;
begin
  aList := nil;
  try
    if aList.Count = 0 then Beep;
  except
    raise EError.Create('Error Message');
  end;
end;

Так? Или что-то другое имелось ввиду?
kealon(Ruslan)
Дата: 04.01.2020 09:06:05
DimaBr
SHS_SHS
Может есть какой-то способ запретить вывод этой ошибки под дебаггером Delphi именно для этого участка кода?

Создать новый класс ошибки и отключить его в дебагере
угу... , как же ты отключишь хард-ошибки из обработчика SysUtils :-)

SHS_SHS
Была такая мысль ). Все возможные (известные нам) варианты получения значений уже обработаны, для всех остальных просто обращение к памяти. Отсюда и ошибка. Можно попробовать еще более глубоко разобраться, но просто нет на это времени, проще пока оставить экранирование.
ну раз проще и не задалбывает, то нужно подождать пока привыкнете
softwarer
Дата: 05.01.2020 01:47:00
SHS_SHS
Может есть какой-то способ

Если коротко - вам нужно взять на работу программиста. Но поскольку вы этим способом всё равно не воспользуетесь, помучайтесь пару месяцев - после этого придёт в голову, например, по факту случившегося AV отключать автоматический пересчёт вызвавших его выражений.