debugger watches you

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

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

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

Similar Posts

  • Выходные

    Эти выходные оказались зачетными, обнаружились несколько очень неприятных багов, из-за которых пришлось торчать на работе, ведь на носу Лейпциг 🙂 Теперь я, вроде бы, умею раскручивать стек, имея дамп всей памяти, слава богу ее не очень много, всего 24МБ. Проапгрейдил ассерт, теперь он выдает файл, строку, имя функции в которой произошло нарушение. Написал, как показала…

  • MsBuild покорён

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

  • Howto brick Asus P5B

    Расскажу я о том, как легко можно убить мать и как потом сложно восстановить, но всё же возможно – во вполне домашних условиях. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Пешеходная жизнь

    Ездил я сплавляться на Тису в закарпатье, машину не успел поставить в гараж, поэтому попросил сделать это отца, он сделал. Когда я приехал, и на следующий день собрался на работу, то обнаружил, что папик оставил ключи и техпаспорт, но цинично упёр ключ от гаража на работу вместе с собой. Скажу я – ездить на маршрутке,…

  • IGDA в Киеве

    В следующую субботу (22 октября 2005) будет проходить конференция геймдевелоперов, надо бы сходить туда, посмотреть ну и себя показать возможно 🙂 Хочется киевскую геймдев коммьюнити увидеть вживую – главное только заранее договориться 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Снова автомобиль

    Похоже, что траблы с совиет каром – это норма жизни, только разобрался с геном, как на меня обрушилась новая проблема. Уезжал вчера с военки, все хорошо, кроме одной мелочи – отказал один цилиндр, хорошо, что я еще не выехал на большую дорогу, плохо что при этом шел дождь. Каким-то чудом мне удалось пофиксить этот баг,…