debugger watches you

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

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

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

Similar Posts

  • Всё новое – хорошо забытое старое

    Возникла у меня накануне насущная необходимость обработки игровой логики (триггеры), но при этом скриптинг у нас ещё совсем не готов, а результат нужен вот-вот. предложил глянуть на редактор уровней от старкрафта, я его открыл, посмотрел, посоздавал триггеры, подумал и меня осенила мысль, что такого функционала для нас должно хватить с головой и ещё останется 🙂…

  • IGDA в Киеве

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

  • погодка

    Что может быть лучше, чем дождь и +4 зимой? Только дождь и -4 зимой! Отковырять лёд со стёкол на машине становится нетривиальной задачей, дойти до этой самой машины тоже 🙂 Вчера на полном приводе было хорошо по этому щастью рассекать, сегодня на переднем с летней резиной было стрёмно 🙂 Share this post: Share on X…

  • Luabind bugs and fixes

    Сегодня утром на меня возложилась задача перевести проект на рельсы нового буста 1.33. Это не было бы большой проблемой, если бы не луабинд, который с ним не дружит. Во всяком случае версия, лежащая на их сайте, пришлось выкачать из CVS последнюю ревизию и скомпилировать у себя. С этим проблем не было. Проблемы начались, когда я…

  • Add-in stable alpha

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

  • Hammerwars

    Ура, наш мегапатч для европейской версии hammerwars прошёл QA и скоро выйдет на полки Playstation Store. На самом деле это даже не патч, это наполовину переписанный продукт, т.к. в то, что вышло весной играть можно было с большим трудом. Но теперь вроде даже получилась игра! Из-за проблем с коллизиями пришлось переписывать физику, взяли модуль коллизий…