Как LLDB реализует функцию установленной точки останова?

Я хочу реализовать функцию set-breakpoints через LLDB, я прочитал исходный код lldb и понял часть реализации. Мой вопрос, где реализуется точка останова набора исходного кода? Как lldb взаимодействует с DWARF?

0

Решение

Этот вопрос, возможно, более уместно адресовать в список рассылки lldb-dev (lldb-dev@lists.llvm.org). Если вы в конечном итоге делаете что-то, что хотите отправить в lldb, вам все равно нужно это обсудить …

Но вкратце: часть точки останова lldb, которая обрабатывает фактическую установку точек останова, — это ядро ​​поиска точек останова. Ядра поиска для установки точек останова в lldb всегда являются подклассами класса BreakpointResolver. Вы можете прочитать комментарии в BreakpointResolver.h для более подробной информации о том, как это работает. Файл & Преобразователем установки точки останова линии является BreakpointResolverFileLine (в BreakpointResolverFileLine.cpp).

Тогда эта перегрузка Target :: CreateBreakpoint:

  lldb::BreakpointSP CreateBreakpoint(const FileSpecList *containingModules,
const FileSpec &file, uint32_t line_no,
lldb::addr_t offset,
LazyBool check_inlines,
LazyBool skip_prologue, bool internal,
bool request_hardware,
LazyBool move_to_nearest_code);

работает, чтобы взять спецификации для файла & Выровняйте точку останова и создайте соответствующий BreakpointResolver и сделайте из него точку останова. Наконец, CommandObjectBreakpoint :: CommandObjectBreakpointSet собирает аргументы командной строки и передает их в соответствующую функцию Target :: CreateBreakpoint для создания точки останова из командной строки.

Вопрос о том, «как lldb взаимодействует с DWARF», слишком сфокусирован, чтобы дать согласованный ответ. DWARF имеет много движущихся частей, и lldb использует DWARF разными способами … Можете ли вы спросить более конкретно, что вы хотите знать? Кстати, если вы не просматривали спецификацию DWARF (из http://dwarfstd.org) вы, вероятно, захотите сделать это, прежде чем погрузиться в использование DWARF в lldb.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector