gpt4 book ai didi

c++ - LLDB是如何实现设置断点功能的?

转载 作者:行者123 更新时间:2023-11-28 04:35:15 24 4
gpt4 key购买 nike

我想通过LLDB实现set-breakpoints功能,阅读了lldb源码,了解了部分实现。我的问题是源代码设置断点在哪里实现? lldb 如何与 DWARF 交互?

最佳答案

这类问题可能更适合发给 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),您可能想在深入了解 lldb 对 DWARF 的使用之前先阅读一下。

关于c++ - LLDB是如何实现设置断点功能的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51630217/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com