LINUX.ORG.RU

data breakpoint для Common Lisp (прототип)

 ,


0

3

Вот смотрите. Есть такая вещь, как data breakpoint. Позволяющая отловить момент, когда какой-то урод испортил мои красивые данные в памяти, и поставить брекпойнт, который сработает в этот момент и укажет на урода.

CL, конечно же, всем прекрасен. Но для Си такая технология есть, а для CL её нет. Во всяком случае, её нет в Lispworks, SBCL и CCL. Отсутствие этой технологии является большим упущением в конкурентной борьбе, потому что эта возможность нужна (и не нужно это оспаривать).

Так вот, я сегодня посвятил большую часть дня изучению вопроса о том, что можно сделать, и у меня получился

вот такой вариант

Есть добровольцы доделать? Нужно вот что:

1. Отлавливать движение объекта при сборке мусора и переставлять брекпойнт, в чём отчасти поможет *after-gc-hooks*

2. Отключать брекпойнт на время сборки мусора.

Считайте пп 1-2 головоломкой - я думаю, что она имеет решение.

3. Другие места, а не только aref для строки

★★★★★

Последнее исправление: den73 (всего исправлений: 3)

Отладчик

Есть такая вещь, как data breakpoint.

Эта вещь есть не в языке C, а в отладчике.

Я не специалист по Common Lisp'у, но может в Slime тоже есть отладчик, и тоже можно делать такие штуки.

Camel ★★★★★
()
Ответ на: Отладчик от Camel

Да, это есть в отладчике, но выражения на Си там можно вводить в команде watch, а на лиспе - нельзя. Поэтому для Си мы фактически можем поставить брекпойнт, а для лиспа - нет. В Slime этого тоже нет, потому что Slime опирается на реализацию CL. В реализации CL нет, значит и в Slime тоже нет.

den73 ★★★★★
() автор топика

Ссылку на ютьюб давать — это издевательство

anonymous
()
Ответ на: комментарий от monk

Да просто по массе причин, начиная от того, что setf-у можно определять новые методы, заканчивая тем, что повреждение может быть вызвано некорректной работой прилинкованного Си-кода или самого рантайма лиспа. В случае, если объект не движется при сборке мусора, так можно ловить баги и в сборщике мусора.

den73 ★★★★★
() автор топика
Ответ на: комментарий от den73

Используй message passing для общения с программами на C

anonymous
()
14 сентября 2017 г.

Недавно заглянул в мануал по CCL и там вроде есть возможность трассировать доступ к объекту.

den73 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.