Обновить
4
0

Пользователь

Отправить сообщение
На телефоне Jolla при установке Android Support ставится hybris и как миниум opengl начинает идти через его юзерспейские so. Насчет ядра не знаю, в /lib/modules ничего похожего на андройдовское не видно.
Насколько я знаю, поддержка Snapdragon 400/Adreno 305 добавлена в ванильное ядро:
https://en.wikipedia.org/wiki/Adreno
>As of September 2013, the kernel components (DRM and KMS driver) of freedreno have been accepted into mainline Linux kernel version 3.12.[16] These components are used together with user-space parts libDRM and Mesa 3D.
Наколько я понял, работает и то и то
https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)
>Wayland works with all Mesa-compatible drivers with DRI2 support[87] as well as Android drivers via the Hybris project.

В репах mer я вижу и mesa и hybris. Но не одновременно, поставиш mesa — придется удалить hybris и поддержку андройда.
Можно например заблокировать всю рекламу из коробки фаерволом. На оф андройде подозреваю все блокировщики из плея будут иметь ограничения на блокировку (странно если бы гугл такое пропустил).
Да, плюсы этого метода — он не требует драйвера, не поломается в ближайшем будующем.
Минусы — это скорее аналог dtrace на маке\фре (где проблема strace тоже полноценно не решается).
Принципиальное отличие — мы обрабатываем буффер эвентов уже после того как все произошло, когда strace останавливает тред, делает анализ, продолжает тред.
При этом strace может корректно вынуть все параметры, а вот информации из эвента не достаточно что в ETW что в dtrace.
Можно пытаться вынуть инфу со стека, надеясь что он еще не испорчен, вот так я пытался протрейсить все exec() с параметром бинари под маком:

Тык
#!/usr/sbin/dtrace -C -s

#pragma D option quiet

proc:::exec-success
{
printf("\nEXECNAME: %s\n", execname);

this->isx64=(curproc->p_flag & P_LP64)!=0;
#define SELECT_64_86(x64, x86) (this->isx64 ? (x64) : (x86))
#define GET_POINTER(base, offset) (user_addr_t)SELECT_64_86(*(uint64_t*)((base)+sizeof(uint64_t)*(offset)), *(uint32_t*)((base)+sizeof(uint32_t)*(offset)))

this->ptrsize=SELECT_64_86(sizeof(uint64_t),sizeof(uint32_t));
this->argc=curproc->p_argc;

this->isClean=SELECT_64_86(1, (curproc->p_dtrace_argv==(uregs[R_SP],sizeof(uint32_t),sizeof(uint32_t))));
this->argv=(uint64_t)copyin(curproc->p_dtrace_argv,this->ptrsize*this->argc);

/* printf("%s with args:%d (%p, %p)\n",execname, this->argc, curproc->pdtraceargv, uregs\[R_SP\]); */

printf("EXEC: %s ", (0 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,0)) : "");
printf("%s ", (1 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,1)) : "");
printf("%s ", (2 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,2)) : "");
printf("%s ", (3 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,3)) : "");
printf("%s ", (4 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,4)) : "");
printf("%s ", (5 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,5)) : "");
printf("%s ", (6 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,6)) : "");
printf("%s ", (7 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,7)) : "");
printf("%s ", (8 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,8)) : "");
printf("%s ", (9 < this->argc && this->isClean) ? copyinstr(GET_POINTER(this->argv,9)) : "");
printf("\n");

#undef GET_POINTER
#undef SELECT_64_86
}



Но увы, работает это не всегда. Так же буффера могут переполняться и теряться, если их недостаточно быстро обрабатывать\сохранять, то есть 100%ных гарантий тут никаких.
Я исследовал. Он хукает Ntdll.dll, вобщем работает, но при остановке монитора подопытный процесс крашится.
Проблема в том, что то что я мониторю, вызывает syscalls напрямую, минуя обертки Nt*.
strace мониторит именно что syscalls, нужно тоже самое в винде.
Пользуюсь им, хорошая утилита, но это не вывод вызова всех ядерных функций.
Вывод аналога strace должен показать вызовы всех syscalls из SDT. Вот примерно такой вывод должен быть:
http://drmemory.org/docs/page_drstrace.html

drstrace единственная извесная мне оставшаяся альтернатива, однако она использует ретрансляцию кода и рабоатет это весьма медленно, перехват не гарантирован, если ретранслятор немного запутать. Ну и попросту оно начало крашиться.
Вообще подобные утилиты уже давно выходят из строя с завидной регулярностью.
«If you are new to the industry and want to start making USB devices, the vendor ID from the USB-IF will cost you $5000 and the code signing certificate will probably cost a few hundred dollars per year.»

Нормально так, для независимых разработчиков самое то)
Нет, вы были правы, но это актуально только для Windows Home Edition, на ней официально отключить передачу ключей нельзя. Покрайней мере по официальной информации, по наблюдениям что-то отсылается всегда на всех версиях при всех отключенных настройках.
https://xakep.ru/2015/12/30/ms-recovery-key/
Вообще то, для Secure Boot это должно быть не опцией, и убунта тут непричем.
Первая попавшаяся ссылка из гугла: http://www.securitylab.ru/blog/personal/Ennormoz/19457.php

То есть ключи дефолтные там уже прошиты должны быть в железе, обычно только от мс. В биосе так же обычно есть возможность добавить другие ключи.
Подозреваю опция убунты, это способ обхода через выбитый у мс подписанный загрузчик, когда то видел такие новости.
Так что это как раз винда палки в колеса вставляет.
Ну вроде как многие так и делают, Win7 до сих пор самая популярная. Но это можно лишь временно, придет время, поддержка закончится, перестанут приходить секурити обновления, куда-то деваться придется.
А версию из репозиттария используете или отсюда? https://www.qt.io/ru/download-open-source/
В репах уж больно старое.
Для кастомных типов я смог решить эту проблему с помощью debug helpers
http://plohrmann.blogspot.ru/2013/10/writing-debug-visualizers-for-gdb.html

Для стандартных типов QT/C++ в последних QTCreator проблем быть не должно, хотя помнится там был нюанс с опцией «Load system GDB pretty printers».
О, мониторить ФС это легко. Я делал и на винде (ReadDirectoryChangesW) и на линуксе http://man7.org/linux/man-pages/man7/fanotify.7.html или http://man7.org/linux/man-pages/man7/inotify.7.html
Увы я сталкивался и с противоположным, делал я веб сервер, получилось 60k rps против 120k rps линух. Делал песочницу для него, на линуксе сделал через ptrace (Можно SeLinux), на винде начал через драйвер и потом забросил.
С аудио пеерами никогда проблем не знал, неужто ни один не приглянулся? http://www.tecmint.com/best-linux-audio-music-players/
По всему остальному согласен. Far и под wine приспособил, следующий наиболее подходящий — Double Commander, отладка в Qt Creator тоже менее удобна, в определенной степени я пробелмы решил, но из коробки ситуация хуже.
Когда говорят про повседневные бытовые задачи — у меня на уме 2 вещи: Libre Office и Steam.
И то и другое есть, Libre Office я использую уже давно и на винде, (уф, про таблицы на VB можно забыть).

Если же говорить про программерские задачи, аналога strace на винде не подскажите?

Вот игры это да, их меньше. Мне лично не хватает Far Manager и ААА игр.
Хотя игр все больше, по поводу игр рекомендую https://www.gamingonlinux.com/index.php?module=calendar

А вам конкретно чего не хватает?
Да да, это оно и есть. Mesa и графический стек линукса тут не работает, запускается X сервер в софтварном режиме и VNC клиент.
Точно такая же схема как тут http://www.straightrunning.com/XmingNotes/
Помоему уже даже xming не нужен, порт уже добавлен в cygwin.
А гуи в нем работает? Когда последний раз проверял, убунту на нем пускали как консольный сервер, к которому подсоединялись через VNC. Я такое уже давно делал через XMing, пока это для консольных утилит, не более.
А возможность отключить проверку сетрификатов при загрузке остается?
Пользователям конечно без подписи уже давно не отшипишь, но хоть для отладочных целей.
Увы теперь даже такие элементарные вещи:
Аналог strace — нужен драйвер.
Песочница для произвольного кода — нужен драйвер.
А в самом дравере надо как-то обходить PatchGuard или как там сейчас это делается.

А ведь я помню еще времена когда strace под виндой был и работал.
А теперь, разве что drmemory с динамической ретрансляцией кода остался, и то сейчас пробую drstrace.exe — крашится.
Увы, увы, увы.
Есть https://www.freebsd.org/platforms/arm.html
А меня вот какой вопрос волнует. Вопрос древнего спора kqueue vs epoll.
Это конечно удобно с точки зрения приложения ждать в одном месте но много разных типов эвентов, не добавля все дескрипроты что могут просигнализировать.
Но потом я думаю, как бы я реализовал драйвер, который бы раскидал эвент в очереди десятка приложений и в них бы небыло гарантированно зарезервированного места под этот эвент?
Просто увеличивать очередь? А если часть приложений уснет? Мы ведь или всю память забъем или часть эвентов потеряем, как с очередью сигналов, так?
Как это в современном BSD решено?

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность