std::filesystem::path canonical_path = std::filesystem::canonical(object_name, ec);
    if (ec)
        return;
    
    std::filesystem::path local_debug_info_path = canonical_path.parent_path() / canonical_path.stem();
    local_debug_info_path += ".debug";
    std::filesystem::path debug_info_path = std::filesystem::path("/usr/lib/debug") / canonical_path.relative_path();
    if (std::filesystem::exists(local_debug_info_path))
        object_name = local_debug_info_path;
    else if (std::filesystem::exists(debug_info_path))
        object_name = debug_info_path;
    else if (build_id.size() >= 2)
    {
        
        
        String build_id_hex;
        build_id_hex.resize(build_id.size() * 2);
        char * pos = build_id_hex.data();
        for (auto c : build_id)
        {
            writeHexByteLowercase(c, pos);
            pos += 2;
        }
        std::filesystem::path build_id_debug_info_path(
            fmt::format("/usr/lib/debug/.build-id/{}/{}.debug", build_id_hex.substr(0, 2), build_id_hex.substr(2)));
        if (std::filesystem::exists(build_id_debug_info_path))
            object_name = build_id_debug_info_path;
        else
            object_name = canonical_path;
    }