debugger watches you

Сидел я на выходных и развлекался отладкой одного production софта, который отлично работал на линуксе, но после того, как предыдущий сервер сдох, а на новом решено было ставить FreeBSD, обнаружилось странное выпадание программы, вместо корректной работы.
Начал я гуглить туториалы по gdb и заниматься отладкой. С горем пополам обнаружилось, что происходит банальный проезд по памяти. Но так как код чужой, разбираться в нём лень, да и времени не особо много, то пришлось ходить по коду через step next и смотреть значение переменной-жертвы. Попутно читая туториал глаз зацепился за слово watch – прочитав внимательней оказалось, что можно ставить breakpoint на изменение значения переменной – алилуйя! В доке написано, что если процессор поддерживает, то будет аппаратно работать, а если нет, то программно и в разы медленней. Вторым моим удивлением оказалось, когда gdb сказал, что hardware watchpoint set. Тут я совсем офигел – сколько уже работаю с x86, а о таком и не знал.

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

Подведя итог, таки интеловская платформа умеет делать аппаратно прерывания на обращения по заданному адресу и теперь отладка проезда по адресу становится в разы легче.

Similar Posts

  • uwsgi

    Случайно обнаружилось, что в ini конфиге uwsgi важен порядок объявления параметров, поэтому если сначала объявить virtualenv, а потом указать подключение плагина python3, то будет попытка завестись с системным питоном. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Цифровое телевидение

    Заполучил тут я телевизор с цифровым тюнером, а так как всякий хай-тек у меня вызывает повышенное слюноотделение, то решено было сразу это и протестить. Результат превзошёл все мои ожидания – в Киеве принимаются 19 ТВ каналов и 5 радио – всё вещается в цифровом формате и ловится на обычную комнатную антенну. Всё-таки, похоже, не всё…

  • Про работу

    Сегодня, наконец-то, подтвердилось, что ошибка, с которой мы боремся с начала недели – это баг в компиляторе. Отчёт уже принят афтарами и они чинят, теперь ждём патча. Кул, не каждый день находишь баги в компайлере 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Славское наносит ответный удар

    Состоялась ещё одна поездка в заповедный (за последние 5 лет мало что изменилось) горнолыжный курорт Славское, но в этот раз на целых 3 дня – с субботы по понедельник, о которых попробую вкратце написать. Если совсем кратко, то – мне понравилось. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share…

  • Предвестник транспортного коллапса

    Сегодня утром я выехал из своего двора и офигел – машин на дороге было, как на каком-нить крещатике. Еле втиснулся. Дальше хуже – обнаружив, что в какой выезд с моего любимого района не ткнись – везде куча машин. Забрал Серёгу и поехали по самой короткой дороге. В результате только с троещины выезжали полтора часа –…

  • Турция ч.2

    Румыния-2 Фагараш – Питешти – Бухарест (о. Снагов) – Констанца – Эфорие Норд Трансфагарашская дорога – горная трасса национального значения, с множеством поворотов на 180 градусов и проходящая через отметку 2044 метра над уровнем моря. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit