debugger watches you

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

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

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

Similar Posts

  • Playstation 3: Media Edition

    PS3 крутая весч, слов нету, но, пока что с точки зрения медиацентра она проигрывает PS2 с SMS (simple media system). Да, она поддерживает uPnP (DLNA) – протокол для упрощения стриминга всякого видео и музыки с серверов, поддерживающих данные протоколы (цифровой дом), но что толку, если для корректного отображения видео сервер его отдающий, должен заниматься перекодировкой…

  • Концерт Apocalyptica

    Вчера ходил на концерт апокалиптики. Ниче так, круто 🙂 Сначала был разогрев – в течении получаса выступали непонятные наши группы. Определенно им это удалось лучше чем группе “Supermax” перед концертом ДДТ пару лет назад, когда ее выгнали со сцены бутылками 🙂 А потом было полчаса затишья – разогрев закончился, а апокалиптика еще не вышла. От…

  • адвенчура

    за прошедшие праздники проехал 4300 км. Из них 2500 по Румынии. Details will follow 🙂 Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share on Email Share on Reddit

  • О прошедшей ИГДА

    Ну короче уже столько времени прошло, что мне лень вспоминать как оно там было, выложу только фотку меня с пастором, который для того, чтобы поучаствовать в мероприятии приехал из Днепропетровска. Пастор слева, я справа. Пастор находится в благовении от того, что нам всем рассказывал мегапродвинутый менеджер нового, суперпеспективного игрового проЭкта, о том, что он может…