43、深入探索共享库与多线程调试

深入探索共享库与多线程调试

1. 支持多个 ELF 文件的函数查找

在查找目标中的函数时, std::target::find_functions 函数需要遍历目标中的所有 ELF 文件。我们可以通过将代码(除了第一条和最后一条语句)封装在一个 lambda 表达式中,进行一些小的修改,并将其传递给 sdb::elf_collection::for_each 来实现:

sdb::target::find_functions_result
sdb::target::find_functions(std::string name) const {
    find_functions_result result;
    elves_.for_each([&](auto& elf) {
        auto dwarf_found = elf.get_dwarf().find_functions(name);
        if (dwarf_found.empty()) {
            auto elf_found = elf.get_symbols_by_name(name);
            for (auto sym : elf_found) {
                result.elf_functions.push_back(std::pair{ &elf, sym });
            }
        }
        else {
            // --snip--
        }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值