debugger watches you

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

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

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

Similar Posts

  • Win7

    Поскольку концентрация упоминаний вокруг меня ещё не вышедшей ОС превысила все допустимые размеры, я решил посмотреть своими глазами на это счастие. Мне очень понравилось! В жертву была принесена машина, на которой стояла DesktopBSD, на которую я безуспешно пытался поставить KDE4. Машина, кстати, довольно древняя – Athlon 2500+, 2GB RAM, Radeon X850, 320 GB SATA HDD….

  • Свадьба

    За последний месяц – это уже вторая свадьба, на которой я побывал, уже можно делать некоторые выводы. Первое – я не хочу жениться 🙂 Второе – мне кажется, что если проводить свадьбу в соотвествии с некоторыми вырезками из традиций, то им надо все-таки следовать, так как не очень приятным оказался выкуп невесты на последней свадьбе,…

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

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

  • Assembler в Add-in

    Разрабатывая аддин возникло желание добавить возможность просмотра ассемблерного кода для выбранного файла проекта – так же как это реализовано в CodeWarrior. Для этого нам надо сделать следующее: 1. Добавить кнопку в контекстное меню файла. 2. Отдать компилятору на съедение выбранный файл 3. Создать окно отображения кода в студии 4. Вывести в это окно то, что…

  • Квейк 4

    Игрушка мне понравилась, прикольная и динамичная – именно то, что надо для того чтобы снять лишнее напряжение (ну пиво не считаем) Бегаем, крушим монстров, классные спецэффекты, напрягает только попытка мозга все время понять как они работают и как их спереть и сделать у себя 🙂 А потом я начал копаться в ресурсах игры. ЭТО ПЕСТЕТС!…

  • Путешествие в Питер

    Во вторник, 5.06.2007 в Питере выступали Linkin Park, а так как я давненько их люблю послушать, а на 3м курсе вообще был мегафанатом, то решил съездить с друзьями на концерт, и город посмотреть. Поезд в Питер идёт, почему-то целые сутки, хотя по трассе туда всего 1200 км. Но, к счастью, если едешь не один, то…