debugger watches you

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

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

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

Similar Posts

  • Сегодня когда дибажили с KVaks’ом адд-ин, то обнаружили интересную особенность студии. Левые файлы, которые открыты в студии не висят просто так – они лежат в проекте под названием Miscellaneous Files, а это значит, что если вы думаете, будто у вас только один проект в солюшене (ну или там пять, шесть), то вы ошибаетесь – их…

  • Позднеосеннее катание

    Сегодня ходили небольшой морозостойкой компанией кататься по району. Прикольно однако – вроде бы и холодно, но если ветра нету, то ездить очень даже приятно, можно даже слалом катать – но почему-то не получалось – как-то ноги криво стояли 🙂 Но ощущения очень приятные после того, как погоняли, сидеть в тепле и пить горячий чай –…

  • Vi iMproved

    Напишу-ка я про один из самых интересных текстовых редакторов. Идея появилась после того, как я нашел аддин – интегрирующий основную функциональность в студию. http://viemu.com/ В связи с моим администраторским увлечением (я занимаюсь небольшим саппортом нескольких серверов фирмы моих знакомых) мне пришлось познакомиться с консолью юникса, а там и с текстовыми редакторами – конфиги-то надо править…

  • Google Crashpad

    Для того, чтобы собрать crashpad под Windows с DLL runtime (/MD /MDd), нужно создать в своём домашнем каталоге (c:/users/konst например) подкаталог .gyp и в него положить файл include.gypi со следующим содержимым: {   ‘target_defaults’: {     ‘configurations’: {       ‘Release’: {         ‘target_conditions’: [           [‘OS==”win”‘, {             ‘msvs_settings’: {                ‘VCCLCompilerTool’: {                   ‘RuntimeLibrary’:…

  • Суббота на работе

    Вчера предложили сегодня (в субботу) поработать, сказали, что сейчас это рабочий день, а значит негры должны выйти на плантации, потому что урожай обещали собрать до конца недели, а на половине пальм еще висят бананы. Ну я и прибыл выполнять свой долг американской (канадской) родине. Правда не совсем понятно, почему до конца этой недели? Если я…

  • Славское наносит ответный удар

    Состоялась ещё одна поездка в заповедный (за последние 5 лет мало что изменилось) горнолыжный курорт Славское, но в этот раз на целых 3 дня – с субботы по понедельник, о которых попробую вкратце написать. Если совсем кратко, то – мне понравилось. Share this post: Share on X (Twitter) Share on Facebook Share on LinkedIn Share…