debugger watches you

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

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

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

Similar Posts

  • Assembler в Add-in

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

  • щотчег

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

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

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

  • Природа

    Как здорово, все-таки, вырваться из этого города на природу. Пожить в лесу, в палатке – это круто. Нас собиралось изначально почти десять человек, но приколы начались, когда Ленка с Олегом сказали, что на самом деле им надо идти на день рождения их друга (тоже на озеро), а Серега и Наташа отморозились по причине работы и…

  • “Отпуск”

    Сегодня у меня начался отпуск аж до понедельника (4 дня). В общем-то не очень плохо 🙂 Завтра попробую зайти в кассы и купить билет в Крым, если повезет, то завтра и уеду 🙂 Хоть посмотрю немного на море в этом году, поскольку что-то я не уверен в том, что к осени получится взять нормальный отпуск….

  • Карпаты весной

    На последних выходных я снова ездил в Карпаты, снова в Пилипець, но жили в другом домике – теперь с туалетом внутри, что очень удобно в холодную погоду 🙂 Эта поездка оказалась более необычной чем остальные – в этот раз в поезде мы ехали в разных вагонах, и если туда мы ехали в соседних вагонах, то…