LINUX.ORG.RU

Сообщения LINUX-ORG-RU

 

★ Трекер горячих новостей и интересных штук - мини/нано/пико/важных

 , , нано-новость, ,

Для тех кто хочет написать/прочитать новости.


Если вы знаете интересный проект не стесняйтесь и поделитесь на него ссылкой тут. ٩(。•́‿•̀。)۶
Если у меня нет такого проекта в отслеживаемом я его добавлю в отслеживаемое (сейчас их около 1050)

  • ссылка должна вести на страницу где видно изменения:
    • github, gitlab страницы релизов и иное подобное
    • официальная страница новостей
    • блог разработки

Тут релизы и новости, горячие как пирожки, о которых мне некогда/лень/нет компетенции писать.
Или о которых вообще писать не надо (минорщина/скучно) я просто буду скидывать их в комментарии.


Первые комментарии относятся к удалённым ссылкам из шапки поста, они перенесены в комментарии ниже.

LINUX-ORG-RU
()

Чемпионат мира по Urban Terror 2022 : Сегодня в 20:00

 , ,

##### СБОР ИГРОКОВ НА ЧЕМПИОНАТ МИРА ОТ ИМЕНИ РОССИИ и LOR! Отпишитесь в теме если готовы, прочитайте эту тему там всё есть

Сбор окончен.:
Сегодня в 20:00 по Москве, состоятся турнир.
Трансляцию можно будет наблюдать тут https://www.twitch.tv/T3ebO

Приветствуются все любители испанского стыда, фейспалмов, и подобных развлечений. Болейте за нас, ведь мы участвуем в чемпионате по игре в которую не умеем играть (я то точно). Это будет нечто, а может быть ничто ыгыгыггыы

Текущий состав

Присоединяйтесь к нам

Тут мы обсуждаем и тренеруемся сейчас нас двое, надо больше людей. Опыт не важен учимся по ходу дела. Счёт идёт на часы!


Присоединяйтесь к официальному дискорду игры

Там описаны правила и транслируются события

Следите за официальной трансляцией соревнования

Соревнование начнётся субботу 1го января 2022го года в 6 вечера.

Для тех кто в танке это GNU GPL-2.0 двиг https://github.com/FrozenSand/ioq3-for-UrbanTerror-4/releases USP: Дабы не вводить в заблуждение игра закрытая, открыт только двиг.

  • Всё мы ливнули, сил нет, там ультра задроты, но местами мы показали себя хорошо. Теперь мы киберкатлеты настоящие =)
LINUX-ORG-RU
()

1000000 загрузок Tux Racer!!!!!

 , ,

Один миллион загрузок!

Мы достигли большого рубежа: Tux Racer 0.61 был загружен более миллиона раз! Все мы в Sunspire Studios хотели бы поблагодарить всех, кто скачал игру, за вашу поддержку. Мы также хотели бы поблагодарить всех, кто прислал нам отзыв, так как мы очень ценим ваше мнение.

Источник

А ты скачал Tux Racer?!

LINUX-ORG-RU
()

Предрелизное тестирвоание Ubuntu Touch OTA-21

 , ,

Ubports 5го января 2022 года готовят выход Ubuntu Touch OTA-21 уже описаны, разнообразные редизайны, улучшения исправления проблем https://ubports.com/ru/blog/1/post/ubuntu-touch-ota-21-call-for-testing-3796#blog_content имеется канбан доска где отмечается прогресс https://github.com/orgs/ubports/projects/31

Разработчики просят обновится до rc и потестить так как описано в ссылке выше.

На взгляд описания релиз будет состоять практически полностью из исправления багов и недочётов за некоторыми исключениями. Минорщина.

LINUX-ORG-RU
()

Аrchbang - обновил обои!

 , ,

А также добавил по словам разработчика новые «зимние» темы и поменял цвета в i3

https://ru.wikipedia.org/wiki/ArchBang - для тех кто в танке =)

Ожидайте новых iso сборок :D Пока что ничего нету, ждём в галерее показа мод =)

ссыль https://archbang.org/2021/12/29/winter-beta-release/

LINUX-ORG-RU
()

Qt6.2 + Webassembly = лавки чмафки

 , ,

Можно потыкать https://www.qt.io/qt-examples-for-webassembly

Культя опубликовала статью в которой показывает работу qt приложений в браузере https://www.qt.io/blog/qt-6.2-web-assembly-whats-new. Для сборки используется Emscripten, а позиционируют они это как возможность избегания установки приложений.

На данный момент в браузере могут работать вот эти модули

  • Qt Core
  • Qt Gui
  • Qt Network
  • Qt Declarative
  • Qt Svg
  • Qt Charts
  • Qt mqtt

Что позволяет писать вполне полноценные и полновесные приложения для браузера на Qt. По ссылке скрины выполняющихся программ в браузере. Хоть эта фича пока тестовая, но видно что qt серьёзно так настроилась, так как подобный рынок по сути пустой и можно серьёзно застолбится предоставив наверное первый настолько мощный инструмент для web приложений (ну не считая игровых движков)

Ах да, проприетарщина поганая =) Но кто знает может внезапно опять сменят политику партии. Пока что культя верным шагом идёт к своим проприетарным истокам.

LINUX-ORG-RU
()

Птички не жрут вкусную и полезную еду!

 , , , ,

На улице холодна. Птички как маленькие ядерные реакторы им норм, но надо топливо. Взял поддон от печенья давалил туда овса, опарышей, сала, жира топлёного, семечек от кобачков, дольку банана одна штука. Высунул за окно поставил на подоконник. Неделя прошла, ноль внимания на швейцарский стол, хотя слышно как чирикают на деревьях буквально в десяти метрах.

Врубал песенку большой синицы на 2 часа. Ноль внимания. А вы подкармливаете птичек? И хавают ли они ваши угощения в это нелёгкое для них время. У нас видимо зажрались. Или боятся/игнорят моё окно.

(перед окном никто не прыгает, на самом окне растительности просто тьма всё в зелени окно открыть пробелема) Звуки в комнате только от ударов по клавишам.

UDP: Ну и хрен с ними :D

LINUX-ORG-RU
()

Гуголь и рассылка debian-russian эмммм

 , , , ,

В продолжении темы Гуголь спамит в рассылку дебиана

Новое https://i.ibb.co/hCJxKtw/2021-12-12-12-52-28.png

Держу в курсе

LINUX-ORG-RU
()

Гуголь спамит в рассылку дебиана

 , , ,

https://i.ibb.co/bb2HbrB/2021-12-09-14-04-43.png =) К слову мне уже раз 10 пришло сообщение на мыло о изменениях в условиях использования. Держу в курсе.

LINUX-ORG-RU
()

Как запустить игушку Reveal The Deep ?

 , ,

Решение

  • 1 скачать jre-8u311-linux-i586.tar.gz https://javadl.oracle.com/webapps/download/AutoDL?BundleId=245467_4d5417147a92418ea8b615e228bb6935

  • 2 распаковать в steamapps/common/Reveal The Deep/Linux/

  • 3 Запускать из каталога Linux через терминал ./jre1.8.0_311/bin/java -jar ./rtd.jar

  • 4 В случае неуспеха возможно нужно доустановить apt install libxtst6:i386 или иные библиотеки на отсуцтвие которых будет ругаться


Есть вот такая игрушечка Reveal The Deep и очень хочется в неё попробовать поиграть, но вот проблема из стима она не стартует и проблема не нова https://steamcommunity.com/app/411560/discussions/search/?q=linux&gidforum=485624149155954013&include_deleted=1

Ошибка при запуске через терминал такая

dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ ./Linux/RevealTheDeep 
Loading JVM runtime library ...
Passing VM options ...
Creating Java VM ...
Passing command line arguments ...
Loading JAR file ...
Exception in thread "main" java.lang.ClassNotFoundException: mitchellbaxter.depthcharge.desktop.DesktopLauncher
	at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
	at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
Error: failed to load/find main class mitchellbaxter.depthcharge.desktop.DesktopLauncher
#--------
#-- Попытка пустить напрямую
#--------
dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ java -jar ./Linux/rtd.jar 
Inconsistency detected by ld.so: dl-lookup.c: 105: check_match: Assertion `version->filename == NULL || ! _dl_name_match_p (version->filename, map)' failed!
dron@gnu:~/.steam/debian-installation/steamapps/common/Reveal The Deep$ 

Java я не знаю и специфики, конечно видно error: failed to load/find main class mitchellbaxter.depthcharge.desktop.DesktopLauncher мол чего то не хватает, но у многих же игра работает (кеш я проверял) значит то что нужно есть, но как бы нет.

Ну, подумал пустить через протон, но хрен не слаще репы там javы нету ну и всё.

Есть как бы конфиг где указывается тот самый mainClass и откуда его брать classPath

{
  "classPath": [
    "rtd.jar"
  ],
  "mainClass": "mitchellbaxter.depthcharge.desktop.DesktopLauncher",
  "vmArgs": [
  ]
}

Если открыть в архиве rtd.jar и поискать DesktopLauncher оно там есть https://i.ibb.co/YjfZH0d/2021-12-07-19-40-18.png эммм и чво?

В ином типе запуска уже ошибка Inconsistency detected by ld.so: dl-lookup.c: 105: check_match: Assertionversion->filename == NULL || ! _dl_name_match_p (version->filename, map)’ failed!` опять же логика понятна, а суть и откуда ноги растут нет.

Если под strace погонять то

stat64("/home/dron/.steam/debian-installation/steamapps/common/Reveal The Deep/Linux/mitchellbaxter/depthcharge/desktop/DesktopLauncher.class", 0xffe62f3c) = -1 ENOENT (Нет такого файла или каталога)

Эммм, ничё не понимаю.

У кого то есть эта иушечка? Работает? Или может есть на трекерах пираточка репакнутая рабочая? Я то игру купил, аж три раза (себе и 2 подарка) так что можно с чистой совестью и в полном соотвецвии с законом доводить ПО до рабочего состояния =)

Если есть идеи отпишитесь, а я пойду ещё порою обсуждения и саму игру дальше поковыряю

LINUX-ORG-RU
()

Игры про космос/фантастику/отмосферку/историю или типа того.

 , ,

Вот закончил The Swapper проходить (по совету анона взял очень не пожалел странно что раньше не слышал про неё и не видел нигде), до этого прошёл Alien Isolation. До этого прошёл две части Dead Space. До этого прошёл SOMA. Между делом другие были, но эти отражают то чего хоца. В них всех есть некий антураж общий. Ну так вот. Кто чего посоветует, на подобе или около того?

LINUX-ORG-RU
()

The swapper - как этот уровень пройти?

 , ,

Вота https://i.ibb.co/vH52xLN/2021-11-30-21-09-13.png и если можно не прям как, а просто одну подсказку. Сижу туплю минут 10 уже. Сил нет =)

Гуглить непонятно как нет номеров карты, а если искать то полигры заспойлерю себе, а она и так небольшая вроде

Аааа, всё, допёр.

LINUX-ORG-RU
()

возможен ли фиксированный poll rate мышки?

 , ,

Установил частоту опроса на 1000Hz

options usbhid mousepoll=1
#systool -m usbhid -A mousepoll
Module = "usbhid"

    mousepoll           = "1"

Смотрю через evhz

USB OPTICAL MOUSE : Latest  1008Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   496Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   500Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   502Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   496Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   494Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   506Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   494Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   500Hz, Average   538Hz
USB OPTICAL MOUSE : Latest   336Hz, Average   536Hz
USB OPTICAL MOUSE : Latest   479Hz, Average   535Hz
USB OPTICAL MOUSE : Latest   523Hz, Average   536Hz
USB OPTICAL MOUSE : Latest   490Hz, Average   536Hz
USB OPTICAL MOUSE : Latest     1Hz, Average   528Hz
USB OPTICAL MOUSE : Latest   100Hz, Average   514Hz
USB OPTICAL MOUSE : Latest   492Hz, Average   514Hz
USB OPTICAL MOUSE : Latest   111Hz, Average   508Hz
USB OPTICAL MOUSE : Latest    13Hz, Average   500Hz
USB OPTICAL MOUSE : Latest    91Hz, Average   494Hz

Двигаю быстро частота взлетает, начинаю пиксельхантить частота вплоть до 1 герца.

Просто интересно можно ли принудительно заставать мышку опрашивать 1000Hz стабильно? Чтобы даже если она на месте стоит частота опросов не падала?

И вот ещё, заметил что клик происходит не когда я НАЖИМАЮ кнопку, а когда я её ОТПУСКАЮ. Нет не потому что клик происходит при отпускании, а потому что он настолько долгий походу что я это тупо вижу. Тоесть нажал отжал два щелчка от кнопки, ну так вот действие от клика (любое игры,сброс выделения текста да что угодно) происходит с запозданием, я нажимаю отжимаю, даже палец вверх на милимерт успеваю поднять и происходит действие.

Ну так вот, у меня мышек в жизни мало было эта OKLICK какая то дешманская, но такая задержка… Может что-то подкрутить можно? Тила latency какой может есть, на примере с скоростью опроса датчика. Ну и вот ещё до кучи, если мышку поднять то светодиод через секунду тише светит как будто она чрез N мс уходит в ожидание это софтовым методом происходит как с падением частоты опроса или нет?

Суть… В CS:GO нагибать неполучается душенька лютует. У меня реакция 15 мс я тупо нажимаю и жду кулак в подбородок когда железо по проводам данные перешлёт… Хнык.

UDP: Нет игры нет проблем, нафиг эту задротилку =)

LINUX-ORG-RU
()

Сегодня конференция по Steam Deck начало в 21:00

 , , , ,

Сейчас на инглише будет попозжа переведут, вроде как будет обзор желеееза там, как разрабам чё да как деееелать там и всё такое. И вообще вроде как будет много чего интересного для интересующихся.

https://steamcommunity.com/steamworksvirtualconference/steamdeck

Я смотреть не буду ибо иду в люльку и ваааще буду ждать перевод. А тут может кто выжимку даст =)

Всё, споки споки ноки, чу ^.^

LINUX-ORG-RU
()

cast xDShot VTFedit

 ,

vblank_mode=0 %@xDShot% привет ты наверняка пользуешься VTFedit не будет трудно скинуть рабочий wine бутыль с ним? Ему нужен dontnet20 который сейчас не качается, короче никак… Или можно чем то другим конвертировать tga в vtf? Есть для gimp плагин древний на гитхабах, вываливается на этапе сборки boost ковырять плюсовый мусор не умею.

И я до сих пор негодую, чего все теги повыпиливали? Был же тег texture,текстуры и прочее…

LINUX-ORG-RU
()

TGA + RLE + Gimp = не понимаю

 , , , ,

Суть вот две картинки из 4х пикселей RGB порядок с лева на право с верху вниз

  • б белый
  • ч чёрный
[б][ч]
[ч][б]
xxd -g 1 norle.tga;#картинка без RLE
00000000: 00 00 02 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 ff ff ff 00 00 00 00 00 00 ff ff ff 00 00  . ..............
00000020: 00 00 00 00 00 00 54 52 55 45 56 49 53 49 4f 4e  ......TRUEVISION
00000030: 2d 58 46 49 4c 45 2e 00                          -XFILE..

xxd -g 1 rle.tga#картинка с RLE
00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff  . ..............
00000020: 00 00 00 00 00 00 00 00 54 52 55 45 56 49 53 49  ........TRUEVISI
00000030: 4f 4e 2d 58 46 49 4c 45 2e 00                    ON-XFILE..

Тут

00000000: 00 00 0a 00 00 00 00 00 00 00 02 00 02 00 02 00  ................
00000010: 18 20

Это TGA заголовок где третий байт 02 указывает что это TRUE COLOR NO RLE. А 0a что это TRUE COLOR + RLE Далее 11+12 это размеры по икс, а 13-14 размеры по y 2x2 пикселя итого 4 я великий математик

18 это битность цвета равная (R=8+G=8+B=8) = 24 бита или 3 байта на блок данных которые будет кодировать RLE.

Далее 20 это солянка из бит в байте, тут указывается что данные идут с лева на право с верху в низ. Всё понятно?

Далее следующий байт в без RLE картинке это собсна и есть данные цвета вот они

00000010: 18 20 ff ff ff  00 00 00   00 00 00  ff ff ff
          *  * [R  G  B] [R  G  B ] [R  G  B ][ R  G  B]

Всё что дальше не важно.

А вот теже данные но типа с RLE

00000010: 18 20 01 ff ff ff 00 00 00 01 00 00 00 ff ff ff
          *  * RLE [ DATA ] ?????????????????????????????
                           [ DATA? ][RLE][DATA ] [ DATA ]

Тут сразу за 0x20 идёт 01 что как бы значит что ага у нас один блок данных из 24 бит или 3ёх байт

01 ff ff ff
RLE BLOCK [RLE_LEN=01 RLE_DATA= ff ff ff

Так как данные чередуются то они кодируются от 1 до 127, если есть нечередующийся блок то он кодируется от -1 до -127, при декодировании достаточно убрать знаковый бит и получить число. Но тут этого не надо это так для справки если я сам правильно понял.

Ну так вот ребята а дельше идёт 00 00 00 эммм ну ОК если у нас следующий блок за 01 ff ff ff равен нулю то эмм значит он и есть часть блока и надо его тоже добить нулями до 3 байт, ладно, прыгаем вперёд уже не на 4 байта (RLE=1+COLOR_BITS=3) а на просто 3. И читаем 01 00 00 00 ага у нас один блок данных из трёх нулевых байт. Сразу вопрос какого хрена это и предыдущее просто не 02 00 00 00 тоесть не 2 блока по 3 нулевых байта тоесть 6 нулевых? А вместо этого чехорда. Ок идём дальше, а там ff ff ff 00 мы знаем размер картинки уже это 2x2 и это последний 24 битный блок, но мы в месте первого ff ожидаем RLE значение последовательности. Короче я чего то не понимаю ни хе ра. Картинка тривиальная из 4х пикселей там где RLE по сути избыточен, но если он задан данные должены обрабатываться именно как RLE последовательность. Только вот хрень какато…. И да на просто чёрной или белой картинке такие же приколы хотя там то всё должно быть вообще по красоте, но нет там тоже есть места где 00 00 00 вылазят на който хер отдельно вместо кодирования вместе с другими данными.

Да я в курсе что xxd показывает мне например 0x86 как длину последовательности 134 блока по 3 байта (3=R8G8B8), но на деле это выше 127 значит надо убрать знаковый бит и получить длину последовательности 6 блоков по 3 байта (3=R8G8B8) Но в примере этого нет так как и так разбор как я всё это понимаю растянулся.

Ну так вот друзья, чё за жопка? Что я не так понимаю? Можете сами взять картинку побольше 8на8 например, нарисовать на одной половине просто цветом одим, а на второй попеременным там или как удобно сохранить как c RLE так и без. Посмотреть на обе через xxd и увидеть приколы, как оно закодировано. Тут так, а тут сяк.

Бррррррррр, https://www.youtube.com/watch?v=vlUe8ciyh4w

P.S. Я хрен знает какие теги ставить вычистили всё блин rle, tga поставить не даёт. Кто там все теги вычистил и нахрена?

ЧЯДНТ?

UDP: Результат работ тут https://github.com/orangeduck/Corange/pull/73 кому надо

LINUX-ORG-RU
()

Производительность реализаций парсинга конфигурационных форматов

 , , , ,

Интересует большая табличка сравнения скорости парсинга различных древовидных форматов конфигураций в разных реализациях. Json например и json-c,jansson иное. TOML например и его реализации. libconfig и так далее. Что бы например им скармливали гигабайтный конфиг и сколько мегахешей мегабайт с секунду они обрабатывали.

Да я гуглю прямо сейчас, но какие то рандомные тесты непонятные везде. Хочется сравнения в один ряд и форматов и реализаций при обработке одних и тех же данных.

Ну вот например https://github.com/serde-rs/json-benchmark/blob/master/README.md только по множеству разных форматов и их реализаций хочется увидеть.

UDP: Короче масштабных сравнений нету в природе вроде

LINUX-ORG-RU
()

Лор не открывается с мобилки ERR_TIMED_OUT

 , , ,

UDP: Причина в MTU или чём то косвенно/явно с этим связанным. ЯННП. Path MTU Discovering Black Hole причина вроде.

UDP2: Да это оно

This target allows to alter the MSS value of TCP SYN packets, to control the maximum size for that connection (usually limiting it to your outgoing interface’s MTU minus 40 for IPv4 or 60 for IPv6, respectively). Of course, it can only be used in conjunction with -p tcp. It is only valid in the mangle table. This target is used to overcome criminally braindead ISPs or servers which block "ICMP Fragmentation Needed" or "ICMPv6 Packet Too Big" packets. The symptoms of this problem are that everything works fine from your Linux firewall/router, but machines behind it can never exchange large packets:
1) Web browsers connect, then hang with no data received.
2) Small mail works fine, but large emails hang.
3) ssh works fine, but scp hangs after initial handshaking.
Workaround: activate this option and add a rule to your firewall configuration like:
iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN \
-j TCPMSS --clamp-mss-to-pmtu

--set-mss value
Explicitly set MSS option to specified value.

--clamp-mss-to-pmtu
Automatically clamp MSS value to (path_MTU - 40 for IPv4; -60 for IPv6).

Установил пока MSS на минимально возможный

iptables -t mangle -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu

Скорость закачки норм.

Testing download speed................................................................................
Download: 85.27 Mbit/s
Testing upload speed......................................................................................................
Upload: 93.89 Mbit/s

И это при 30 Mbit/s который мне провайдер предоставляет, он же виноват в проблеме. Ко мне не приходят IMCP пакеты с требованием о фрагментации пров их режет на кой то хер, ну я так понял ибо я их не вижу в tcpdump. (вижу, но не те). Ладно может кому пригодится. Фух. Хоть теперь относительно понятно.


В чём может быть причина? Пк->wifi свисток->мобилка. Из termux linux.org.ru пингуется. Но с браузера не заходит. Да, другие сайты работают. Опенннет например и прочие гуглы. wget в termux останавливается на connected. Что-то не то с сертификатами? Lynx тоже не открывает из termux. С основного пк, вот сейчас пишу всё нормально.

Межсетевые экраны отключены. nftables,iptables чистые.

LINUX-ORG-RU
()

Автоматически вставить макрос в начало функции и в конец

 , , , ,

Для регистрации входа в функцию и выхода есть -finstrument-functions который укажут вызываемую и вызывающую функцию, ну и вход и выход из функций.

#include <stdio.h>


char * str = 0;
    void __cyg_profile_func_enter (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_exit (void *, void *) __attribute__((no_instrument_function));
    void __cyg_profile_func_enter (void *func,  void *caller)
    {
        printf("start \n");
    }


    void __cyg_profile_func_exit (void *func, void *caller)
    {
        printf("end \n");
    }

void func(){}

int main(int argc, char *argv[])
{
    func();
    return 0;
}
dron@gnu:~/Рабочий-стол$ gcc cc.c -Wall -pedantic -std=c11 -finstrument-functions
dron@gnu:~/Рабочий-стол$ ./a.out 
start 
start 
end 
end 
dron@gnu:~/Рабочий-стол$ 

Есть ли что-то такое же, но для макросов? Суть. Я для себя лабаю трассировщик вызовов, да я знаю про backtrace_*() функции. Но без объяснений почему я его не хочу, я его не хочу в данном случае. Ну если кратко быстрее __func__,__FILE__ из тела при вызове отдать чем дрыгать backtrace_*() который будет дрыгать таблицы. Но но это не суть вообще.

Сейчас я делаю тупо вставку макросов в начало и конец функции, если есть return то перед каждым return то есть перед выходом

/*
RS --Record Start
RE --Record End
PB --Print Backtrace
*/
void function_5() {RS   RE}
void function_4() {RS   function_5();  function_5(); function_5();  RE}
void function_3() {RS   function_4();  function_4(); function_4();  RE}
void function_1() {RS   function_3();  PB;  RE}
void function_2() {RS   function_1();  function_1(); function_1();  RE}
int main()
{
RS
    function_2();
RE
}

с выхлопом

dron@gnu:~/Рабочий-стол/HUNTER$ gcc cc.c
dron@gnu:~/Рабочий-стол/HUNTER$ ./a.out 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
┣━━━━━━ frame ━━━━━━━>
cc.c:main() 
└─> cc.c:function_2() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   └─> cc.c:function_1() 
│   │   └─> cc.c:function_3() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   └─> cc.c:function_4() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   │   │   └─> cc.c:function_5() 
│   │   ┗━> backtrace from ━━━> cc.c:function_1() 
dron@gnu:~/Рабочий-стол/HUNTER$ 


Всё хорошо (ну ещё доделывать надо но суть ясна) только расставлять макросы муторно.

Вариантов вижу три

  • 1 руками

  • 2 парсером каким, который определит что это функция, вот её начало, а вот конец, а вот return и return вдруг сам не макрос

  • 3 чем то типа -finstrument-functions но для макросов

Вот собсна всё. Чво посоветовать по этому поводу есть?

LINUX-ORG-RU
()

Как определить что вывод был перенаправлен?

 , , ,

Допустим программа делает

appname 
-hello
fprintf(stdout,"\x1B[31m""-hello""\x1B[39m");

Но если

appname > out.txt

она будет делать

fprintf(stdout,"hello");

Можно ли как то определить что stdout был перенаправлен?

LINUX-ORG-RU
()

RSS подписка на новые темы