8000 New debug dump functionality by Dazzar56 · Pull Request #2660 · elfmz/far2l · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

New debug dump functionality #2660

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 68 commits into from
May 25, 2025
Merged

New debug dump functionality #2660

merged 68 commits into from
May 25, 2025

Conversation

Dazzar56
Copy link
Contributor
@Dazzar56 Dazzar56 commented Feb 5, 2025

По мотивам #802

Предложения, замечания и PR в ветку Dazzar56/far2l/debug_dump приветствуются.

прямо сейчас лог дампиться вот в таком виде.

/-----[PID:350305, TID:0]-----[2025-02-05 22:08:06,130]-----
|[/home/anton/far2l/far2l/src/main.cpp:318] in MainProcess()
|=> msg = тестовое сообщение лога
|=> c_str = Hello, C-string! абв
|=> c_arr = Hello, char array! абв
|=> w_str = Hello, wide C-string! абв
|=> w_arr = Hello, wide char array! абв
|=> s_str = Hello, std::string! абв
|=> ws_str = Hello, std::wstring! абв
|=> fs = Hello, FARString! абв
|=> i = 42
|=> l = 1234567890

@@ -75,7 +75,7 @@ set(VERSION_PATCH "${VERSION_PATCH}-beta")
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")

set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
Copy link
Contributor
@akruphi akruphi Feb 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Всё-таки такая смена с 11 на 17 должна быть не постоянной, а только для CMAKE_BUILD_TYPE равное например DEBUGextend, т.е. даём разрабам возможность дебажить по старинке в стандарте 11 и по новому в стандарте 17 имея риск, что, если применены новомодности, то потом при сборке релиза в стандарте 11 они боком вылезут.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ага, это первая из моих хотелок в тикете. Надо делать и сборку дампера и общий режим C++17 отключаемыми вместе.

@elfmz
Copy link
Owner
elfmz commented Feb 16, 2025

Can you give some details about what it is?
Also it seems you have duplicated some existing things, like EscapeLikeInC, GetMyHome...

@unxed
Copy link
Contributor
unxed commented Feb 16, 2025

Это отладочный дампер переменных. Я эту кашу заварил, первый коммит (initial который) по моему коду сделан.

В фаре 100500 типов строк, и при отладке куча времени уходит на то, чтобы вспомнить, какая именно тут у нас строка, которую задампить надо, и как она правильно выводится. В итоге сделали совместными усилиями штуку, которая позволяет делать так:

int i = 42;
double d = 3.1415926535;
std::string s = "Hello, World!";
FARString s2 = "Hello, Far World!"
DUMPV(1, i, d, s, s2);

int arr[] = {10,20,30,40,50};
std::vector<std::string> vec {"Hello", "World"};

// второй аргумент DCONT — число выводимых элементов, 0 — все
DUMP(1, DCONT(arr,0), DCONT(vec,0));

и получать на stderr понятный дамп, формат которого выше в первом сообщении описан. Работает только с C++17 (такую poor man's reflection сделать на более ранних прям сильно сложнее), поэтому я изначально думал только в Debug сборке это собирать, но сейчас уже, выходит, можно собирать всегда (но что там с производительностью? может, в релиз и не надо).

@spnethw
Copy link
Contributor
spnethw commented Feb 16, 2025

EscapeLikeInC, GetMyHome...

GetMyHome - возможно.
EscapeLikeInC - точно нет, тут также экранируются и показываются кодом все другие символы 0x00 - 0x1f, включая '\0'.

@spnethw
Copy link
Contributor
spnethw commented Feb 16, 2025

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

Ну это не логгер для юзверей, а штука для разработки и отладки. По крайней мере я так себе её представляю.

@unxed
Copy link
Contributor
unxed commented Mar 2, 2025

А чего оно во FreeBSD не билдится?

@spnethw
Copy link
Contributor
spnethw commented Mar 2, 2025

А чего оно во FreeBSD не билдится?

Что-то с CI?

@unxed
Copy link
Contributor
unxed commented Mar 30, 2025

А на какой стадии тут у нас всё в итоге?

@Dazzar56 Dazzar56 changed the title [WIP] New debug dump functionality New debug dump functionality Apr 8, 2025
@Dazzar56
Copy link
Contributor Author
Dazzar56 commented Apr 8, 2025

Я думал немножко адаптировать код из far2l/src/syslog.hpp
НО это не можно сделать в другой раз. На данный момент, дампер для дебага вполне готов к использованию в текущем виде. Препятствий для мержа быть не должно.

@spnethw
Copy link
Contributor
spnethw commented May 4, 2025

@elfmz Есть комментарии / возражения / пожелания?
На работу far2l код влиять не должен, так как предполагается к использованию только при отладке.

@unxed
Copy link
Contributor
unxed commented May 7, 2025

Очень хочется это в master!

@unxed
Copy link
Contributor
unxed commented May 7, 2025

Коллеги, а напишите плз рез EEF8 юме, что у нас тут получилось. Может быть, его не хватает, для того, чтобы говорить о мерже

@spnethw
Copy link
Contributor
spnethw commented May 7, 2025

Коллеги, а напишите плз резюме, что у нас тут получилось. Может быть, его не хватает, для того, чтобы говорить о мерже

Так в DUMPER.md всё описано, и кратко, и подробно.

@unxed unxed mentioned this pull request May 13, 2025
@elfmz elfmz merged commit 822f929 into elfmz:master May 25, 2025
7 of 9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants
0