debugger watches you

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

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

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

Similar Posts

  • howto: recover failed p5b flash

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

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

  • Размышления в конце рабочего дня

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