debugger watches you

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

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

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

Similar Posts

  • Выпивка 2

    Нда… В орехе оказывается был детский лепет 🙂 Вот корпоративная пати – это оно, в общем я больше в такие игры не играю – в смысле стока не пью 🙂Зацените 🙂 а вот что бывает через некоторое время 🙂 На всяк случай замечу – меня здесь нету 🙂 Share this post: Share on X (Twitter)…

  • Countdown

    Итак, до вожделенного отпуска осталось около 3 дней. А тут ещё и ацкий кранч, из-за которого даже не успеваешь новости почитать (сейчас есть время написать, только потому что идёт полный ребилд проекта), впрочем это и неплохо, время пролетает намного быстрее. Недельный отпуск зимой – мечта работодателя. Отправляемся колонной из четырёх автомобилей на Буковель, будем распугивать…

  • Memory Management

    Вот и подошли вплотную к своему менеджеру памяти. Очень интересная задача оказалась – завраппить маллоки и operator new. Оказалось, что ничего мегасложного в этом нету, главное выделять память так, чтобы она была выравнена на правильные границы 🙂 Хотя то, что я сделал – это пока еще мелочь, дальше хуже – надо будет свой хип делать…

  • Скоро зима

    Утро сегодняшнего вторника порадовало – пришёл на работу, а мне сообщают, что у нас в Киеве открылась ещё одна горнолыжная трасса, не совсем в городе правда – в Вышгороде, но с моей точки зрения – что ехать на Протасов Яр, что в Вышгород – монопенисуально 🙂 Там тоже будут снегопушки, но уклон получше. Так что…

  • VS2005 Automation

    Я пишу Add-in для студии, который бы позволил более эффективно компилировать проекты gcc компилятором, которым мы пользуемся. На данный момент самой важной и насущной проблемой является управление компилятором, получение текущих настроек и установка своих, и вот тут начинаются проблемы 🙁 Для любого Add-in доступен объект типа EnvDTE2, который предоставляет доступ ко всему, что есть в…

  • Об отчете

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