debugger watches you

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

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

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

Similar Posts

  • Мойка машины

    Ездили сегодня с Олегом помыть машину, по ходу к нам прибился Виталя, который был готов на все, лишь бы не учить математику. Вот так мы с Олегом мыли машину А это Виталя отдыхал от математики, и исполнял маленькое наказание: Было прикольно – заработали бутылку водки – чувак на Chevrolet Takuma решил заехать поближе к лесу…

  • Грубая сила

    Дибажил я тут одну программку. Вылетала она при выходе, при чём совсем в том коде, который писался нами, и от которого есть исходники. Вылетала она в коде движка, от которого есть только либы и заголовочные файлы. Происходило всё очень просто – access violation writing location 0xfeeefeee, что обозначает попытку записи в уже освобождённую память. В…

  • Румыния: день 4

    29.04.2008 Вторник, 11:00 (Синая) Мы покинули гостеприимную Синаю и взяли курс на Бузау – грязевые вулканы. Выходя из гостинницы мы встретили гидов и знакомых представителей Укррома, через которых мы, собственно, и открывали визы. Нам доверительно сообщили, что администрация посчитала нас очень тихими и спокойными (наверное они ещё не нашли прожжённый кальяном ковёр). Хотя, с другой…

  • iGo

    Новая карта Украины для iGo (от 15 марта с.г.) поправилась ещё на 10 метров и уже занимает 52 МБ. Для сравнения – Италия тянет где-то на 180. В принципе, если так и дальше будут продолжать, то к евро 2012 у нас будет очень даже хорошее картографическое покрытие (уже сейчас радует). Share this post: Share on…

  • Welcome to real world

    Похоже, что в этой жизни, если хочешь чувствовать себя нормально, то надо забить на всех окружающих и думать только о себе, так как если ты начинаешь думать и о других, то тебя немедлено начинают пользовать. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Фигня…

    Я выложил не ту версию гоблина… А так как я счас не дома, то новую версию смогу выложить только завтра 🙁 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit