debugger watches you

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

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

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

Similar Posts

  • природа экспромптом

    Вчера в 8 вечера внезапно выбрались на природу на шашлыки. Было холодно, ветрено, но тёплая одежда спасала, а когда разожгли костёр, то вообще отлично стало всё. Оказалось, что даже если на улице холодно, то на природу всё равно можно выбираться, ближе к занавесу даже хотелось остаться с ночёвкой. Выехали недалеко под Киев, можно сказать даже…

  • Старкрафт

    Сегодня играл на чемпе по старкрафту, УСЛ – Лига ньюбов – было интересно, теперь лига делится на две подлиги в квалификационной партии – кто выиграл – тот идет в верхнюю часть, кто проиграл – в нижнюю. Играть стало интереснее, поскольку соперники теперь на уровне – тебя не выносят в первые 3 минуты игры 🙂 Короче…

  • ПДД

    Таки приняли! Теперь и у нас смогут пользоваться камерами и фотоаппаратами для фиксации нарушений, эвакуаторы будут работать вполне легально, а штрафы снова смогут брать по месту (но не все, а особо облачённые доверием). Ввели систему контроля систематических нарушений – будут баллы выдавать – набрал 30, отдохни от вождения. За систематическую пьянку на 10 лет общественного…

  • Add-in stable alpha

    Ура! Я наконец-то сделал более-менее стабильный адд-ин, который может работать не только на моей машине 🙂 На данный момент реализовано: 1. Компиляция 1.1. Компилируется каждый файл по отдельности. Файлы берутся из проекта в студии. 1.2. Ошибки/предупреждения парсятся и выводятся в формате, который понимает студия, благодаря чему можно кликнуть на ошибку и перейти на строчку в…

  • Рефакторинг

    Рефакторинг на C++ является штукой нетривиальной, я бы сказал ужасной 🙂 Я потратил уеву тучу времени, чтобы переместить движок игры в дллку, и еще потрачу кучу времени на борьбу с линковкой с дллкой. Ужасно, но деваться особо некуда, надо было изначально писать менее связанный код 🙂 А теперь попала белка в колесо… Share this post:…

  • ДР ДМ

    Сегодня праздновали день рождения Димы и Макса в “бочке” на петровке, все было как обычно – пьянка, рассказы, разговоры и все такое, но потом там начали праздновать “хеллоуин” и стало все намного интереснее. Начала ходить девушка-чертенок и предлагать посетителям раскраситься, ну а так как я не мог пропустить такое, то получилось вот что: А вот…