debugger watches you

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

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

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

Similar Posts

  • Заметки

    Использование неинициализированного флоата, члена класса может привести к зависанию, хотелось бы знать почему… ЗЫ: 3 дня убил, на то, чтобы вычислить это место 🙁 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Четвертьфинал

    Сборная Украины прошла в четверть финала ЧМ мира по футболу 2006, урраа!!! Столько позитива я не получал со времен известных событий 2004 года 🙂 Машины ездили и постоянно сигналили, народ на обочинах подсвистывал и покрикивал. Все-таки такие мероприятия – это великая сила! Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn…

  • щотчег

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

  • Киевская горка

    Ходили сегодня с Андрюхой (экс-старостой) на Протасов Яр покататься. В будни как-то поприятней выходит – народу поменьше, не так всё счёсано и не боишься налететь на кого-то или чтобы на тебя кто-то налетел 🙂 Огорчает только длина – она настолько маленькая, что подъем выходит значительно дольше спуска. Надо ехать в нормальные горы, пора… Share this…

  • Турция

    В субботу 10 сентября я вернулся из Турции – впечатлений море 🙂 Когда мы туда прилетели, прошли паспортный контроль и пошли на таможню, то оказались на улице, там нет въездной таможни 🙂 точнее она есть, но никого не проверяет. То что это – азия стало ясно, когда наш автобус по дороге в отель остановился на…

  • Игра из бек :-)

    Я снова вернулся к написанию игры – подтолкнула меня к этому необходимость делать курсовую работу, в которой надо написать генератор облаков, но как только я прикоснулся, стало ясно, что писать буду снова и много. Сегодня переделал механизм рассылки сообщений о пользовательском вводе, теперь он такой же как в С#, есть эвент (boost::signal), к которому посредством…