From 734e183c67d4869357bcd5a2cbcb5c98dac88123 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 1 Nov 2024 18:50:25 +0300 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE=D1=80=D1=8B=D0=B5?= =?UTF-8?q?=20=D1=81=D0=B2=D0=BE=D0=B8=20=D0=BC=D1=8B=D1=81=D0=BB=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=8D=D1=82=D0=BE=D1=82=20=D1=81=D1=87=D0=B5?= =?UTF-8?q?=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 08-debugging/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/08-debugging/README.md b/08-debugging/README.md index de6ce5a..4336a21 100644 --- a/08-debugging/README.md +++ b/08-debugging/README.md @@ -2,3 +2,13 @@ ## Отладчик +Всю основу написания отладчиков на Linux держит на своих плечах один единственный систенмый вызов - ptrace ("process trace"). Он позволяет выполнять все то, что мы привыкли делать в дебаггере - шаг с обходом, шаг с заходом, просмотр регистров, мучения оперативы и прочие радости отладки. Как тут помочь не знаю, потому что подробный гайд займет целую статью. Предложение простое - почитать великую статью по написанию (первые 2 части покроют весь материал этой лабы): https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/ + +В основном пробелмы будут сопряжены только с чтением того, что вообще может делать ptrace, а может он почти все, что нас инетерсует, тольк вот интерфейс у него мягко скажем не по solid. + +Внутри своего кода я ввел специальный макрос `DONT_CARE`, который призван сигнализировать о том, что при определенном флаге некоторые поля будут игнорироваться. + +В остальном удачи и учтите, что программа останавливается как-то по своей логике, а не по логике обычного человека. Она остановится не в момент ptrace (PTRACE_TRACEME, ...), а в момент execv. Почему так? да фиг его знает если честно. Скорее всего просто в этот момент программа посылает сигнал о том, что образ потока был переписан. Других идей у меня нет. + +Собственно именно поэтому continue прожималось мной 2 раза, а не один, как хотелось бы верить по логике +