FBDEBUGGER пользовательский мануал( для fbdebugger версии 2.58)
Содержание
Используемые файлы и изменения в реестре
Пользовательский интерфейс
Основные кнопки для выполнения отладки
Список переменных в запущенных процедурах\функциях
Просматриваемый лист переменных\памяти
Условные прерывания на переменных\памяти
Контекстные меню
Инструменты
Копирование заметок в буфер обмена
Расшифровка возвращаемых значений
Полный пример (в будущем)
Это отладчик для программ, написанных на языке FreeBasic. ;-) Извините, только под Windows
Отладчик позволяет следить за выполнением программы пошагово, при этом наблюдая результаты на каждом шагу. Значения отображаемых переменных можно не только наблюдать, но и изменять на ходу. И конечно есть и другие дополнительные возможности.
- создать каталог и скопировать в него fbdebugger.exe и fbdebugger_help.chm
- Если вы хотите скомпилировать(собрать) сами исходные файлы отладчика, то для этого используйте:
Fbc s gui fbdebugger.bas fbdebugger.rc. Не забудьте правильно указать пути для ресурсов
Всегда сохраняйте вашу работу до отладки
- Старт fbdebugger *
- Нажать file button и выбрать файл exe **
- Отладка начнется.
- Используйте step button или другие кнопки отладки
* если FBDebugger уже запущен, то в окне сообщений будет предложен выбор остановиться или продолжать с еще одним экземпляром.
** В любом случае компиляция вашего файла EXE должна быть выполнена с ключем -g , что создаст отладочную информацию, необходимую для работы отладчика.
Некоторые линии, например DIM SHARED FOO AS INTEGER, не являются исполняемыми, поскольку их инициализация происходит не в секции кода.
Смотрите исполняемые линии
Fbdebugger может запускаться с отлаживаемым файлом из командной строки, а так же просто поддерживается метод Drag-DROP (просто перетащите EXE в окно отладчика)
Пример с Fbedit:
выберите в меню->настройки->отладка путь к отлачику FbDebugger. Далее выберите тип компиляции Windows console debug, соберите программу. Далее в меню Сборка->запустить с отладчиком
Другой способ:
Вы можете компилировать перетаскивая исходный код в окно отлачика, а после отлаживать, при этом нужно указать путь к компилятору в настройках отладчика[ Настройки]
Постоянные файлы
- FBdebugger.exe, fbdebugger.ini, Fbdebugger_help.chm
Временные файлы в той же директории, что и исполняемый
- fbdebug_compil.log используется для получения журнала компиляции
- dbg_log_file.txt файл трассировки
Реестр
Никаких изменений в реестре, за исключением случаев, когда fbdebugger определяется как JIT отладчик
Основные окна меняются в размере при увеличении главного окна. Кнопки-переключатели могут убирать ненужные окна и оставлять требуемое.
Путь и имя отлаживаемого отображается в названии.
Кнопки для выполнения
отладки
- Всплывающие подсказки, связанные со всеми кнопками. Отключаются в [настройках].
- Они могут использоваться только тогда, когда идет отладка.
- Большинство из них имеют соответствующую опцию в контекстном меню окна исходного текста
Шаг : выполняет только текущую линию.
Горячая клавиша = S
Запуск до курсора : выполнение до линии, где находится
курсор. перед нажатием на кнопку, следует установить курсор на нужной строке.
Отладка работает пока курсор не достигнет нужной строки, либо пока не достигнет
строки с брекпоинтом
. Отладка происходит скрыто,
не обновляя дисплей.
Горячая
клавиша = C
Шаг, минуя процедуру : выполнение происходит в процедурах, но не отображается в отладчике.
При всем этом стандартные операции выполняются не быстро
Горячая клавиша = O
Шаг из процедуры: выполняет выход из текущей процедуры
Горячая клавиша = E
Автошаги : Автоматическое выполнение линий в соответствии с параметрами времени замораживания [настройки]
Горячая клавиша = A
Запуск : Выполнение программы без остановки на линиях
Горячая клавиша = R
Стоп : Остановка отладки.Отладка может быть продолжена
Горячая клавиша = H
Миниэкран : Убирает все окна и оставляет только кнопки для выполнения отладки( может быть полезно для просмотра окон программы)
Быстрый проход : очень быстрое выполнение до строки, в которой находится курсор, но нет возможности прерывания на условных брекпоинтах.
Перед использованием нужно установить курсор на останавливаемую строку
Быстрый режим следит только за CPU брекпоинтами, в результате происходит исполнение как без отладки.
После остановки FBdebugger исследует память, создает дерево процедур и переменных.
В случае бесконечного цикла использовать кнопку остановки.
Горячая клавиша = F
Изменение исполняемой линии : изменяет следующую выполняемую линию, внутри процедуры (в том числе main).
Это можно сделать, изменив значение CPU регистра
Цель состоит в том, чтобы пропустить или повторить определенные линии.
Перед нажатием навести курсор на строку, которая будет новой текущей строкой
Горячая клавиша = M
Освобождение отладки: Все точки останова процессора будут удалены, но отладка может быть остановлена с помощью кнопки СТОП
Удалить процесс : Удаление отлажеваемого процесса. Нужно использовать осторожно.
Горячая клавиша = K
Если запускается новый файл для отладки, то окно сообщений даст возможность убить текущий.
Рестарт: Рестарт текущего процесса отладки
Последние 10 exe: Десять последних отлаживаемых программ.
Присоединиться к запускаемой программе: В списке процессов можно выбрать один, чтобы присоединить отладчик к этой запущенной программе.
Выбрать файл (exe or bas): Открывается файловый диалог, для выбора EXE-файла или исходного текста .Bas.
Кнопки инструментов
Открывает\закрывает окно редактирования.
Поставьте курсор на строку, щелкните правой кнопкой мыши и выберите Add Notes для автоматической вставки этой линии с датой / временем
После этого можно добавлять комментарии.
Как обычно ctrl+A / ctrl+C для копирования в буфер обмена или copy notes to clipboard в меню инструментов.
Инструменты : некоторые полезные инструменты
Кнопки - переключатели SVM : Каждая из этих кнопок увеличивает соответствующее окно : S для исходного кода / V для процедур-переменных-потоков / M для памяти.
Показывает следующую строку для выполнения, с номером строки
Нажмите ШАГ, чтобы достичь этой линии
Отладка производится построчно не для каждого оператора.
СОВЕТ Для ускорения некоторых операций лучше держать их на одной линии. И
наоборот для более детальной информации, следует для каждой инструкции
использовать свою строку
На каждой вкладке отображается один исходный код файла.
В настоящее время линия окрашена в синий или фиолетовый, в случае остановки на
брекпоинте: красным для постоянного и оранжевым для временного брекпоинта
Отображается предупреждение, когда исходный файл новее, чем исполняемый
файл
Размер файла до 500000 байт
Щелкните правой кнопкой мыши, чтобы отобразить Контекстное меню
Список переменных в запущенных
процедурах\функциях
Отображение запущенных процедур и данных с ними связанных
(имя,адрес, а в расширенном режиме [настройки],тип данных,значение, значения указателей)
Глобальные и общие для модулей переменные отображается в
верхней части (вне основного процесса)
Обновление выполняется только тогда, когда fbdebugger стоит в режиме ожидания, после каждого шага или на
остановке.
Динамические массивы не могут быть определены до выполнения определенного кода, поэтому некоторые команды не могут использоваться.
Щелкните правой кнопкой мыши, чтобы отобразить контекстное меню
Отображает все процедуры исходного файла и адреса в расширенном режиме[настройки]
Вы можете выбрать определенные процедуры для исключения при отладке (то есть они отлаживаться не будут) . Автор советует использовать опцию осторожно.
For оператор Fbdebugger восоздает полные имена.
Щелкните правой кнопкой мыши, чтобы отобразить контекстное меню
Отображает все потоки и хендлы , ID в расширенном режиме[настройки]
Выберите один из потоков. Только один поток может отлаживаться, остальные ожидают.
Просматриваемый лист переменных\памяти
Простой способ следить за некоторыми специфическими переменными или частью памяти.
До 10 наблюдаемых значений (переменные / память), обновляются в автоматическом режиме
Четыре отображаются на панели. При желании удаляются правой кнопкой мыши.
Все 10 можно посмотреть во вкладке watched tab.
Alt + левая кнопка мыши для добавления переменной в список из окна исходного кода
Переменные или памяти можно проследить в лог-файле.
Можно наблюдать значения в любом из форматов (шестнадцатеричный, двоичный, ..)
Правая кнопка для отображения контекстного меню
Установленные наблюдатели за локальными переменными сохраняются между вызовами процедур, но реального значения, как вы понимаете не существует.
При перезапуске Fbdebugger, все наблюдатели сохраняются.
Когда вы закрываете fbdebugger значения массивов и памяти удаляются. Позже на запуске отлаживаемого процесса, имя переменной и указатель массива используется для проверки, в случае, если наблюдатели за переменными все еще существуют.
До 10 закладок
Поместите курсор на строку, щелкните правой кнопкой мыши и выберите пункт Toogle bookmark или Ctrl+F2 (только в текущем файле).
Для перехода на следующую имеющуюся закладку клавиша F2, на предыдущую shift+F2. При достижении начала или конца поиска, диалоговое окно сообщит об возможности начать поиск заново.
Существует также возможность выбора закладки в поле со списком. В нем отображаются все закладки(для всех файлов)
Условные брекпоинты на переменной / на
памяти
Как и стандартные точки останова, брекпоинты срабатывают, когда условие выполняется
Возможные тесты: изменения, равенство, различие, и т.д.
Установить брекпоинт. Удалить брекпоинт - левая кнопка мыши
Отображает часть памяти (16 байт или более) с
автообновлением (при шаге или автошаге), форматируя в (BYTE, UBYTE, INTEGER,
и т.д. / DEC, HEX) в соответствии с типом
данных ,беря начало с адреса переменных или свободного адреса
Нажмите на заголовок столбца, чтобы изменить значение (только в первом ряду)
Правая кнопка мыши для просмотра или изменения формата (типа данных,DEC/HEX), для перемещения по памяти (адрес,вперед/назад), для добавления участков для слежения и установки брекпоинтов на изменение памяти.
- Статус выполнения : "loading debug data"(загрузка данных для отладки), "loading sources"(загрузка исходника), waiting (with reason) (ожидание), auto (автоматически), running(запущено)
- Thread number and ID (номер потока и его идентификатор)
- Current
source (текущий исходник)
- Current
proc (main or sub or function) (текущая процедура)
При установке брекпоинта на какой либо линии, произойдет
остановка перед ее выполнением
Есть два типа брекпоинтов:
1)временные, удаляются сразу после выполнения
2)постоянные не удаляются пока вами не будет определено
обратное.
Поставьте курсор на линии, щелкните правой кнопкой мыши и
выберите опцию:
1) Set\Clear BreakPoint для установки или
удаления постоянного брекпоинта F3
2) Set\Clear tempo BreakPoint для установки или
удаления временного брекпоинта Shift+F3
Линия должна быть исполняемой!
Линии точек останова сохраняются при перезапуске отладчика. При желании можете удалить ненужные.
Управление брекпоинтами производится нажатием в контекстном
меню Manage BreakPoints в окне исходного текста:
нажать 'x' = удаление
No change = выход
Clean all = удалить все брекпоинты
Кликнув по ряду = выбор и отображение соответствующей строки в окне исходника
Контекстное
меню
Run to cursor(запуск до курсора)
Step over(шаг минуя процедуру)
Set/reset/manage breakpoints (установка\удаление\управление брекпоинтами)
Ctrl+Left click
or Show var proc/var window (CTRL+левая кнопка мыши или пункт Show var для выделения процедуры или переменной в окне proc\var)
Alt+Left
click on (or near) a variable to add it in the watched list(Alt+левая кнопка мыши или пункт Watched var для
добавления переменной с целью слежения)
Поиск в тексте. Круговой поиск (при достижении конца поиска , поиск начинается сначала).
Поставьте курсор на текст и щелкните правой кнопкой мыши и выберите "Find text" или ctrl+F
Goto line : Поле для перехода на нужную строку. в заголовке видна текущая строка
Show executable lines : Все линии текущей вкладки являются временно окрашены в зеленый цвет.
Цвета восстанавливаются при возобновлении отладки или установке брекпоинта
Add notes : добавляет строку под курсором в окно редактирования
В большинстве случаях нужно выбрать переменную перед нажатием контекстного меню
Set watched : Добавить переменную в список слежения
Break on var : Выберите функцию, и в ней переменную, которая будет использоваться для сравнения.
Index selection
: только для массивов. Вы можете просматривать значения определенных индексов
массива. Выбрать индекс с помощью кнопок +/- увеличить на единицу/уменьшить на
единицу. Изменение
осуществляется в окне proc/var.
Variable
dump : the address of the variable is used as the beggining of the memory area.
Edit var value: Введите новое значение и нажмите кнопку APPLY, чтобы изменить значение переменной. Для указателей значение также отображается и может быть изменено.
Show z/w/string : отображает каждую строку размером до 32000 символов, более широкое использование дампа
Expand : развернуть или показать переменные
Locate proc : выберите название процессы, чтобы выделить ее в файле исходного кода.
Collapse/expand : свернуть или развернуть все линии
Show in var window: выделение переменных в окне proc/var
Далее обычные возможности , связанные с переменными (дамп, редактирование..)
Toggle tracing : установить / сбросить режим трассировки для лог-файла
Cancel all tracing : сброс трассировки для каждого слежения
Switch watch x : переключение выбранного слежения по номеру в главном окне.
Delete : удаление выбранного
Delete all: удалить все с подтверждением.
До 10 окон отображения данных указателей и/или расширение, если UDT.
Есть такие же возможности для сравнения переменных (добавленных для слежение, дампа, редактирования..)
New expand : открыть новое окно с выбранным элементом
Replace current : заменить текущий корень с выбранным элементом, без открытия нового окна
Delta +/- : перемещаться вперед / назад в зависимости от размера стандартного или пользовательского типа
Set delta : введите значение, чтобы установить смещение от начального адреса
Например. если переменная является указателем на массив UDT 12 байт и начальный адрес 3456. Нажатие дельта перемещает на адрес 3468: второй элемент.
To close/to arrange: размернуть все окна
About update : обновление не происходит автоматически, но можно сделать, нажав кнопку обновления. Будьте осторожны, данные могут быть удалены
Большинство настроек сохраняются в INI-файл.
9 8 7 6 5 4 3 1 2
1. Введите пути и имена файлов (fbc.exe, IDE)
2. установите параметрыв для компиляции и отладки
3. Активируйте различные используемые логи (screen display, file), 4 : трассировку выполняемых процедур и линий
5. Измените размер шрифта (8,10,12)
6. Дезактивация подсказок
7. Установите verbose mode on/off, чтобы получать расширенную информацию
8. Выберите задержку между каждой строкой исполнения
9. Выберите положение отображаемой текущей строки, 3 или 5 линий сверху
About: номер версии и автор (Laurent GRAS)
Вы можете отправить мне (sarg AT aliceadsl DOT fr) ошибки, замечания, предложения
Compile info : показывает версию и дату сборки FBC, а так же дату компиляции исходного текста. Просто добавьте эту строку в любом месте источника:
Const FDBG_COMPIL_INFO="$$__COMPILINFO__$$"+__FB_VERSION__+"/"+__FB_BUILD_DATE__+"/"+__FB_BACKEND__+"/"+__DATE__+" "+__TIME__
FBdebugger ищет в памяти (данные раздела) "$$_COMP..." и показывает информацию в окне сообщения.
Help: показать помощь, горячая клавиша=F1
Launch IDE : запустить IDE с файлом .bas в качестве параметра, если пути заполнены [настройки]
Quick edit :
используется поле ввода, чтобы сделать некоторые изменения.
Есть возможность закилять отладку при использовании быстрого редактирования
2 варианта быстрого редактирования : [сохранить , скомпилировать и запустить] или если только один исходный файл / [перезапуск]
Compile and run : компилирует и запускает файл .bas
Copy notes to clipboard : Записки
Show log file : показывает лог-файл исходного кода
Delete log file : удаление лог-файла
List Enum : Список имени перечисления со всеми текстами и значениями
Process list : просто список всех запущенных процессов.
Translate win message : Введите номер сообщения, чтобы получить его расшифровку.
Bin/hex/dec : введите десятичное или шестнадцатеричное значение (&hxxx) для получения значения dec/hex/bin.
JITdebugger : Временная замена системного отладчика
Эта опция позволяет определить fbdebugger вместо стандартного Dr Watson. Отладчик будет автоматически
запускаться по команде DebugBreak или нарушении прав доступа. Ваша программа должна быть
скомпилирована с опцией -g.
Для использования этой опции , нажмите на кнопку replace для замены стандартного
отладчика (Dr Watson)
отладчиком fbdebugger в
реестре. Восстановление
возможно.
Пример :
#include
once "windows.bi" 'mandatory for debugbreak
Print test
line 1
Debugbreak
Print test
line 3
Не
стартуйте FBdebugger , но запустите вашу программу.
После того, как напечатается первая строка, запустится отладчик и программа перейдет в режим ожидания
И другой пример: нарушение доступа.
Некоторая информация о выполнении (системы, процедур и линий, слежений) может быть отображена в консоли или сохранена в файл или то и другое.[настройки]
Отображение файла журнала возможно в исходнике для поиска
при добавлении новых данных можно удалить лог
Нарушение прав доступа (ошибка памяти) и некоторые подобные
исключения отлавливаются отладчиком и fbdebugger ждет на неисправной линии.
Вы можете изменить значения переменных и / или пропустить (не выполнить)
соответствующие инструкции или просто завершить работу программы.
Пример :
Скомпилируйте этот кусок кода.
Dim As
Integer a(1)
Print
"test"
a(5000000)=1
'access violation
Print
"end"
Запустите fbdebugger, если он не определен как JIT debugger, потом выберите\стартуйте example.exe. Вы получаете это окно.
Будет остановка на строке с ошибкой, а в окне некоторая
информация (чтение или запись об ошибке, ..)
Нажмите Да, чтобы продолжить. Затем поставьте мышь на строку Print "end", и нажмите
кнопку M или нажмите кнопку.