Аrchbang - обновил обои!
А также добавил по словам разработчика новые «зимние» темы и поменял цвета в i3
https://ru.wikipedia.org/wiki/ArchBang - для тех кто в танке =)
Ожидайте новых iso сборок :D Пока что ничего нету, ждём в галерее показа мод =)
А также добавил по словам разработчика новые «зимние» темы и поменял цвета в i3
https://ru.wikipedia.org/wiki/ArchBang - для тех кто в танке =)
Ожидайте новых iso сборок :D Пока что ничего нету, ждём в галерее показа мод =)
Можно потыкать https://www.qt.io/qt-examples-for-webassembly
Культя опубликовала статью в которой показывает работу qt приложений в браузере https://www.qt.io/blog/qt-6.2-web-assembly-whats-new. Для сборки используется Emscripten, а позиционируют они это как возможность избегания установки приложений.
На данный момент в браузере могут работать вот эти модули
Что позволяет писать вполне полноценные и полновесные приложения для браузера на Qt. По ссылке скрины выполняющихся программ в браузере. Хоть эта фича пока тестовая, но видно что qt серьёзно так настроилась, так как подобный рынок по сути пустой и можно серьёзно застолбится предоставив наверное первый настолько мощный инструмент для web приложений (ну не считая игровых движков)
Ах да, проприетарщина поганая =) Но кто знает может внезапно опять сменят политику партии. Пока что культя верным шагом идёт к своим проприетарным истокам.
Atox — это свободный клиент Tox (wikipedia.org) для Android, написанный на языке Kotlin.
( читать дальше... )
>>> Подробности (github.com)
Обделённый вниманием релиз вышел 12 дней назад, но тем не менее.
youtube-dl - это менеджер загрузки с открытым исходным кодом под лицензией public domain для видео и аудио, как YouTube, так и более 1000 других веб-сайтов.
Самые значимые исправления и улучшения в этом релизе:
Присутствуют также другие исправления и поддержка новых сайтов.
>>> Подробности (github.com)
«Базальт СПО» приглашает российских разработчиков свободного программного обеспечения на конференцию которая пройдёт с 19 по 22 мая 2022 года в в Переславле-Залесском
Мероприятие объединяет две традиционные ежегодные конференции «Базальт СПО»: «СПО в высшей школе» и конференцию разработчиков свободных программ.
Организаторы ручаются, что конференция, как и во все предыдущие годы, пройдет в неформальной творческой атмосфере свободного обмена идеями, знаниями и кодом. Это очень ценят участники всех мероприятий «Базальт СПО».
Видеозаписи докладов и презентации будут размещены в открытом доступе.
Оргкомитет принимает заявки на доклады по следующим темам.
СПО в учебном процессе (19 и 20 мая):
Разработка свободного ПО (21 и 22 мая):
>>> Подробности (basealt.ru)
На улице холодна. Птички как маленькие ядерные реакторы им норм, но надо топливо. Взял поддон от печенья давалил туда овса, опарышей, сала, жира топлёного, семечек от кобачков, дольку банана одна штука. Высунул за окно поставил на подоконник. Неделя прошла, ноль внимания на швейцарский стол, хотя слышно как чирикают на деревьях буквально в десяти метрах.
Врубал песенку большой синицы на 2 часа. Ноль внимания. А вы подкармливаете птичек? И хавают ли они ваши угощения в это нелёгкое для них время. У нас видимо зажрались. Или боятся/игнорят моё окно.
(перед окном никто не прыгает, на самом окне растительности просто тьма всё в зелени окно открыть пробелема) Звуки в комнате только от ударов по клавишам.
UDP: Ну и хрен с ними :D
В продолжении темы Гуголь спамит в рассылку дебиана
Новое https://i.ibb.co/hCJxKtw/2021-12-12-12-52-28.png
Держу в курсе
https://i.ibb.co/bb2HbrB/2021-12-09-14-04-43.png =) К слову мне уже раз 10 пришло сообщение на мыло о изменениях в условиях использования. Держу в курсе.
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 подарка) так что можно с чистой совестью и в полном соотвецвии с законом доводить ПО до рабочего состояния =)
Если есть идеи отпишитесь, а я пойду ещё порою обсуждения и саму игру дальше поковыряю
Вот закончил The Swapper проходить (по совету анона взял очень не пожалел странно что раньше не слышал про неё и не видел нигде), до этого прошёл Alien Isolation. До этого прошёл две части Dead Space. До этого прошёл SOMA. Между делом другие были, но эти отражают то чего хоца. В них всех есть некий антураж общий. Ну так вот. Кто чего посоветует, на подобе или около того?
Вота https://i.ibb.co/vH52xLN/2021-11-30-21-09-13.png и если можно не прям как, а просто одну подсказку. Сижу туплю минут 10 уже. Сил нет =)
Гуглить непонятно как нет номеров карты, а если искать то полигры заспойлерю себе, а она и так небольшая вроде
Аааа, всё, допёр.
Установил частоту опроса на 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: Нет игры нет проблем, нафиг эту задротилку =)
Сейчас на инглише будет попозжа переведут, вроде как будет обзор желеееза там, как разрабам чё да как деееелать там и всё такое. И вообще вроде как будет много чего интересного для интересующихся.
https://steamcommunity.com/steamworksvirtualconference/steamdeck
Я смотреть не буду ибо иду в люльку и ваааще буду ждать перевод. А тут может кто выжимку даст =)
Всё, споки споки ноки, чу ^.^
vblank_mode=0 %@xDShot% привет ты наверняка пользуешься VTFedit не будет трудно скинуть рабочий wine бутыль с ним? Ему нужен dontnet20 который сейчас не качается, короче никак… Или можно чем то другим конвертировать tga в vtf? Есть для gimp плагин древний на гитхабах, вываливается на этапе сборки boost ковырять плюсовый мусор не умею.
И я до сих пор негодую, чего все теги повыпиливали? Был же тег texture,текстуры и прочее…
Суть вот две картинки из 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 кому надо
Интересует большая табличка сравнения скорости парсинга различных древовидных форматов конфигураций в разных реализациях. Json например и json-c,jansson иное. TOML например и его реализации. libconfig и так далее. Что бы например им скармливали гигабайтный конфиг и сколько мегахешей мегабайт с секунду они обрабатывали.
Да я гуглю прямо сейчас, но какие то рандомные тесты непонятные везде. Хочется сравнения в один ряд и форматов и реализаций при обработке одних и тех же данных.
Ну вот например https://github.com/serde-rs/json-benchmark/blob/master/README.md только по множеству разных форматов и их реализаций хочется увидеть.
UDP: Короче масштабных сравнений нету в природе вроде
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 чистые.
Для регистрации входа в функцию и выхода есть -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 но для макросов
Вот собсна всё. Чво посоветовать по этому поводу есть?
Допустим программа делает
appname
-hello
fprintf(stdout,"\x1B[31m""-hello""\x1B[39m");
Но если
appname > out.txt
она будет делать
fprintf(stdout,"hello");
Можно ли как то определить что stdout был перенаправлен?
Сервер отключать не обязательно, пусть люди общаются. Спасибо.
| ← назад |