debugger watches you

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

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

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

Similar Posts

  • Лытдыбр псто

    Чото модно стало такие штуки в ЖЖ постить, я тож так сделаю, потому что выглядит правдоподобно весьма 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • Кранч

    Вот я, пожалуй, столкнулся вплотную с такой штукой, как кранч – это когда “[18:52] [cppg] наступил креативный момент – когда отведённое время кончилось и понятно, что ни*уя не сделано )” А сдавать майлстоун надо. Хотя у нас предыстория иная, для меня выглядело это так: В четверг вышел на работу и узнал, что пока что делать…

  • Фотография

    Меня начала интересовать фотография, правда не настолько, чтобы покупать ацкую зеркалку за кучу баксов, но всё же. Изучаю всякие доки, очень полезно, оказывается, знать о композиции кадра – куда помещать главное, а куда второстепенное. Думаю, что очень важно даже для мыльничных фотографий – чтобы показ оных не вызывал у жертв желания сразу же закрыть альбом….

  • Отчёт: Румыния 26.04.2008 – 1.05.2008 (день первый)

    Пролог На майские праздники составом из трёх человек (среди которых две дамы), мицу-клубников мы совершили тур на машине (mitsubishi lancer 9) по Румынии и Украине, 5 дней там и 4 здесь. Суммарно накатали 4300 километров, из которых 2500 пришлись на Румынию, средний расход бензина составил 6.2/100 по загранице и 7.3/100 по родине. Ночевали в гостинницах,…

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

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

  • Serialization

    Сегодня, наконец-то, закончил делать сериализацию для всяких игровых объектов – в том виде, как я ее вижу. Идеи были вытащены из буста, но так, как в тех шаблонах сам черт ногу сломит, то пришлось делать “по пониманию”. Делалось это потому что реально существует проблема того, что когда геймдизайнер просит вынести ему новые параметры для настройки…