Pull to refresh
20
6
Тимур @mrognor

C++ enthusiast and developer

Send message

А зачем ставить Gbox и AppGallery? У меня на телефоне LineageOS с Aurora Store, и я не испытываю никаких проблем. Aurora Store — это клиент для Play Market, и там есть всё, по крайней мере я нашел там всё, что мне нужно. С помощью Gapps я завел обычный YouTube, NFC через T-Pay. В итоге разницы с Андроидом нет.

Хорошо, добавлю в статью.

В том, что некоторые параметры, например вланы, могут идти в виде диапазона.

Изначально я планировал сделать всё на базе кода из iproute, я потратил много времени на его изучение и разбор протокола, и в итоге, в момент, когда я отказался от идеи взять оттуда код, я достаточно разбирался в протоколе и уже было проще сделать самому, чем брать libnl3.

Если кому-то нужен способ с ldaddr, то вот он.

#include <link.h>
#include <stdio.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <unistd.h>
#include <execinfo.h>

#include <sstream>
#include <iostream>


#define TRACE_MAX 1024


void print_backtrace()
{
    void* array[TRACE_MAX];
    size_t size;

    size = backtrace(array, TRACE_MAX);

    for (int i = 1; i < size; ++i)
    {
        Dl_info info;
        link_map *extra_info;
        dladdr1(array[i], &info, reinterpret_cast<void**>(&extra_info), RTLD_DL_LINKMAP);
        info.dli_fbase = (void *) extra_info->l_addr;


	    if (info.dli_sname == NULL)
		    info.dli_saddr = info.dli_fbase;

        ptrdiff_t offset = static_cast<char*>(array[i]) - static_cast<char*>(info.dli_saddr) - 1;

        char buf[BUFSIZ];
        std::size_t readed = readlink("/proc/self/exe", buf, BUFSIZ);
        std::stringstream sstream;
        sstream << std::hex << offset;
        std::string command =  "addr2line -e " + std::string(buf) + " " + sstream.str();
        system(command.c_str());
    }
}

void one()
{
    print_backtrace();
}

// Required addr2line
// g++ -g main.cpp
int main(int argc, char **argv) 
{
    one();
}

Для работы нужна утилита addr2line. Собирать с помощью g++ -g main.cpp

С помощью termux и andronix можно установить ubuntu с графической оболочкой и использовать планшет как полноценный арм ноут на линуксе. Я так больше года работал. Pycharm или VsCode запускаются без проблем

Information

Rating
838-th
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity