debugger watches you

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

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

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

Similar Posts

  • Протокол

    “Добрий день, молодший сержант Петренко”, представился милиционер и добавил: “причина зупинки – перевищення швидкостi”, показывая при этом пластмассовую штуку, на которой светились цифры 85. “Будь-ласка пройдемте, составимо протокол”. Вот так вот на меня сегодня составили ни много ни мало – первый протокол 🙂 Теперь я тоже могу относиться к категории нарушителей правил дорожного движения. Надо…

  • Интернет радио

    Я настроил и запустил на одном из своих серверов ретранслятор радио Digitally Imported – типа отмываю траффик, делаю его украинским, жыыр! Самое главное, то, что оказывается AAC музыка, в отличие от MP3 дает в 4 раза меньший траффик при незначительном ухудшении качества – 24 kbps. Я посмотрел график загрузки сервера при включенном радио – мне…

  • Подключение к “недоступной” mysql базе

    Данная проблема подключения к серверу, доступ к которому закрыт возникла, когда понадобилось отредактировать blob поле в таблице, но поскольку руками это сделать практически невозможно, а phpnuke не показывает эти поля, то нужно использовать mysqlfront или аналог. Существует препятствие – доступ на сервер закрыт снаружи, т.е. мы можем подключиться только из скриптов на localhost (127.0.0.1) –…

  • Assist

    Visual Assist хорош всем, кроме одной мелочи – он тормозной, как виндовс 98 на 486 машине. Сегодня меня достало то, что после каждого сохранения можно идти пить чай, потому что происходит это ну очень долго. Секрет оказался простым – авто-бекап файлов, который делает ассист. Однажды я уже сталкивался с его работой, после краша студии он…

  • Пилипец (Карпаты)

    Съездили мы составом из 19 человек в Пилипец, Воловецкого р-на, что на Закарпатье покататься на тех самых горных лыжах. Прогресс там на месте не стоит, открыли ещё 2 трассы, правда, для новичков, но, зато, монтируют креселку на вершину “основной” горы. Она будет тягать почти туда же, куда сейчас это делает бугель, но зато появится возможность…