0 / 0 / 0
Регистрация: 01.01.2026
Сообщений: 19

Трассировка nash под MSYS2

01.02.2026, 20:32. Показов 495. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер!
У меня имеется скрипт configure на bash (под windows 10 + MSYS2).
Результаты выдает не те, что я ожидаю.
У меня нет опыта работы с bash, поэтому мне бы было проще, если бы был инструмент
(что-то типа отладчика), в котором можно проходить скрипт пошагово ?

Вопросы:
1 - Есть ли такой инструмент, если да - как называется ?
2 - Если нет, то как тогда проходят скрипт пошагово (кроме нудной расстановки echo и вывода шагов и переменных) ?
3 - В тексте скрипта перемешаны команды и определения ф-ций - правильно ли я понимаю, что определения ф-ций пропускаются при выполнении (т.е. они выполняются только тогда, когда вызываются, а не в том месте, в котором встретились их определения ?

пример к 3:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
....................... команды .............................
 
map 'disable_components $v' $LIBRARY_LIST
 
echo "#11 $0 $FFMPEG_CONFIGURATION" > $logfile
 
set >> $logfile
 
test -n "$valgrind" && toolchain="valgrind-memcheck"
 
...................... объявление ф-ции ............................
Я правильно понимаю, что в этой точке add_sanitizer_flags(... еще не исполняется ?
 
 
add_sanitizer_flags(){
    case "$1" in
        asan)
            add_cflags  -fsanitize=address
            add_ldflags -fsanitize=address
        ;;
        fuzz)
            add_cflags  -fsanitize=fuzzer-no-link
            add_ldflags -fsanitize=fuzzer-no-link
            : "${libfuzzer_path:=-fsanitize=fuzzer}"
        ;;
        lsan)
            add_cflags  -fsanitize=leak
            add_ldflags -fsanitize=leak
        ;;
        msan)
            add_cflags  -fsanitize=memory -fsanitize-memory-track-origins
            add_ldflags -fsanitize=memory
        ;;
        tsan)
            add_cflags  -fsanitize=thread
            add_ldflags -fsanitize=thread
        ;;
        usan|ubsan)
            add_cflags  -fsanitize=undefined
            add_ldflags -fsanitize=undefined
        ;;
        ?*)
            die "Unknown sanitizer $1"
        ;;
    esac
}
 
........................ опять команды..............................
 
case "$toolchain" in
    clang-*)
        add_sanitizers "${toolchain#clang-}"
        cc_default="clang"
        cxx_default="clang++"
    ;;
    gcc-*)
        add_sanitizers "${toolchain#gcc-}"
        cc_default="gcc"
        cxx_default="g++"
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2026, 20:32
Ответы с готовыми решениями:

Трассировка пути
Уважаемые форумчане, подскажите плиз, как сделать в Убунту трассировку, например до Яндекса. Что то...

Установить режим трассировки скрипта
Написал программу на shell script ( конкатенация файла несколько раз). И зашел в тупик. Не знаю как...

Нет трассировки через мост на Ubuntu Mate
Доброго дня, товарищи Есть Raspberry Pi (далее малина) с Linux Ubuntu Mate на борту. К ней...

13
325 / 50 / 11
Регистрация: 08.04.2022
Сообщений: 190
04.02.2026, 17:06
Насколько я помню, скрипты configure генерятся с помощью autoconf и интерпретатор поддерживается в большинстве случаев posix shell, не баш. Хотя в новомодные времена может быть все что угодно. Если скрипт чист и его никто не трогал, то скорее всего он просто не поддерживет специфическую конфиграцию как у вас.

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

1. запустить в режиме отладки и пытаться разобраться в тоннах мусора

Bash
1
sh -x ./configure
2. натравить на него баш с помощью дополнительного скрипта и сказать ему трассировать каждую команду

Bash
1
2
3
4
5
6
#!/bin/bash
 
set -T
trap 'printf "# $LINENO: $BASH_COMMAND" >&2 ; read' DEBUG
 
source ./configure
Наверняка, найдется еще один-два способа )))

Добавлено через 2 минуты
Ну и ответ на ваш вопрос
Цитата Сообщение от PM123 Посмотреть сообщение
1 - Есть ли такой инструмент, если да - как называется ?
сам шелл. А с башем это чуть-чуть "проще".

И удачи в отладке автоматически сгенерированного скрипта )))
1
0 / 0 / 0
Регистрация: 01.01.2026
Сообщений: 19
04.02.2026, 21:30  [ТС]
Цитата Сообщение от siberian-man Посмотреть сообщение
И удачи в отладке автоматически сгенерированного скрипта )))
siberian-man, я понимаю Ваш восторг, но другого пути не вижу - не понимаю, почему не работает.
Я нашел переменную, в которой хранится применяемый ключ компилятора "-o",
хотел отследить, где она может меняться и на что, а также что его это зависит.

И смысл не в отладке, в смысле - понять, где переменная должна принимать нужное значение, хотя я с удовольствием бы употребил готовое решение

Насчет shell и bash - вполне могу заблуждаться, т.к. с линуксовыми вещами не работал.
Тогда как они соотносятся между собой и с интерпретатором m4 ?
То, что в DOS исполняло BAT-файл, то же (по смыслу) в линукс исполняет configure ?
0
325 / 50 / 11
Регистрация: 08.04.2022
Сообщений: 190
04.02.2026, 21:57
Восторгов нет. И какого-либо негатива тоже. Я как-то заглядывал в них. Давно. Мне становилось страшно. Сейчас нужды такой нет.

Если очень нужно понять, что где и какие значения принимает можно запустить и посмотреть. Способы описал. Можно отлаживать глазами. Это адская работа, учитывая, что скрипт писал не человек, а другая программа. Но даже в этом случае моэно что-то понять. Например, поискать все строки вида имя_переменной=. И опять анализировать.

Также я высказал предположение, что у вас может быть неподдерживаемое окружение, средства компиляции, еще какие-то причины.

Вы уверены, что такое сочетание поддерживается скриптом и вообще проектом, который вы пытаетесь собрать?
Цитата Сообщение от PM123 Посмотреть сообщение
скрипт configure на bash (под windows 10 + MSYS2)
Добавлено через 9 минут
Цитата Сообщение от PM123 Посмотреть сообщение
Насчет shell и bash - вполне могу заблуждаться, т.к. с линуксовыми вещами не работал.
Тогда как они соотносятся между собой и с интерпретатором m4 ?
То, что в DOS исполняло BAT-файл, то же (по смыслу) в линукс исполняет configure ?
Шелл и баш - интерпретаторы команд. Баш то тоже шелл, но крутой навороченный, господин в высоком цилиндре, фраке и часами на цепочке. Иногда под словом шелл подразумевают posix shell, тихого скормного работягу в кепочке. m4 это макропроцессор, эдакий портной, одевающий обоих персонажей, то есть "пишет" скрипты типа configure, годные для обоих. BAT-файл это тоже интерпретатор команд, выражаясь цветисто батрак из бедной индийской провинции.
1
0 / 0 / 0
Регистрация: 01.01.2026
Сообщений: 19
04.02.2026, 22:17  [ТС]
Цитата Сообщение от siberian-man Посмотреть сообщение
Вы уверены, что такое сочетание поддерживается скриптом и вообще проектом, который вы пытаетесь собрать?
siberian-man, этот проект - ffmpeg, хочу собрать под Visual Studio 2026.
В интернете есть инструкции, из которых ясно - это возможно, я следую им (как мне кажется.

В этой ветке мне дали подсказку по ключам компилятора и действительно скрипт подсовывает компилятору не тот ключ.

Вот я хочу как-то продвинуться далее...
0
1134 / 391 / 85
Регистрация: 30.08.2017
Сообщений: 2,413
05.02.2026, 08:25
А это точно в разделе Линух должно обсуждаться, а не у виндузятников?
Ну и почему люди не читают исходники? Вот у самого проекта описание как его в студии скомпилировать:
https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
0
05.02.2026, 16:07

Не по теме:

Цитата Сообщение от _sg2 Посмотреть сообщение
А это точно в разделе Линух должно обсуждаться, а не у виндузятников?
переместил.

0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
05.02.2026, 17:21
Цитата Сообщение от siberian-man Посмотреть сообщение
BAT-файл это тоже интерпретатор команд, выражаясь цветисто батрак
прекрасная работа со словом. завидую.

бат - расширение файла-скрипта для cmd
рак - устоявшееся идиоматическое выражение, описывающее позу, в которой неизбежно придётся находиться при создании данного скрипта.
0
0 / 0 / 0
Регистрация: 01.01.2026
Сообщений: 19
05.02.2026, 22:00  [ТС]
Цитата Сообщение от _sg2 Посмотреть сообщение
А это точно в разделе Линух должно обсуждаться, а не у виндузятников?
_sg2, честно говоря, я не знал куда его пристроить. В Windows ответ нашел по 1-ой фазе ошибки,
однако корни дальше пошли в msys2/bash...

Цитата Сообщение от _sg2 Посмотреть сообщение
Ну и почему люди не читают исходники? Вот у самого проекта описание как его в студии скомпилировать:
https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC
Начали с него... И не помогло...
Оказалось, что надо было сменить язык VS - скрипт configure опознавал компилятор по слову Microsoft, а в русскозычном выводе оно чуть другое.
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
05.02.2026, 22:28
Цитата Сообщение от PM123 Посмотреть сообщение
Оказалось, что надо было сменить язык VS
чего-чего ????

при чём тут в принципе VS ?

у компилятора cl рускоязычный вывод со словом "Мыкрософт"? бред.

в конце концов есть же поддержка набора clang в VS, и в нем такого кала не должно быть.
0
0 / 0 / 0
Регистрация: 01.01.2026
Сообщений: 19
05.02.2026, 22:56  [ТС]
Цитата Сообщение от volodin661 Посмотреть сообщение
Сообщение от PM123
Оказалось, что надо было сменить язык VS
чего-чего ????
при чём тут в принципе VS ?
volodin661,
По крайней мере, после смены языка, скрипт стал заходить в эту ветку (поэтому я и сделал такой вывод):

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
  elif VSLANG=1033 $_cc -nologo- 2>&1 | grep -q ^Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then
        
        echo "                === probe_cc():  (msvc!)"
 
        _type=msvc
        if VSLANG=1033 $_cc -nologo- 2>&1 | grep -q ^Microsoft; then
            # Depending on the tool (cl.exe or link.exe), the version number
            # is printed on the first line of stderr or stdout
            _ident=$(VSLANG=1033 $_cc 2>&1 | grep ^Microsoft | head -n1 | tr -d '\r')
        else
            _ident=$($_cc --version 2>/dev/null | head -n1 | tr -d '\r')
        fi
...
При этому вручную я это - VSLANG=1033 не устанавливал ни до языкового пакета, ни после него...
Просто после вчерашней установки англ. в VS вдруг все заработало. А изменение было только одно - язык в VS,
и это, естественно, повлияло на вывод cl (а как иначе ?).

А у Вас другая версия ?
0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
05.02.2026, 23:28
предполагаю, что, настроив VS на toolset clang, можно избавиться от языкозависимости

Добавлено через 6 минут
Цитата Сообщение от PM123 Посмотреть сообщение
(а как иначе ?
а иначе так: специализированные инструменты должны просто не обращать внимание на туземное окружение,
чтобы не устраивать хаос, хаоса и без того хватает.

пример существующего хаоса:
Десятичная точка в математике должна быть именно точкой, а не запятой, как это принято у некоторых людоедских туземных племён.
0
06.02.2026, 08:21

Не по теме:

Десятичная запятая должна быть запятой, как во всех нормальных странах, а не в тех где до сих пор мили с галлонами

0
 Аватар для volodin661
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,871
06.02.2026, 09:23
Цитата Сообщение от _sg2 Посмотреть сообщение
Десятичная запятая должна быть запятой, как во всех нормальных странах
плавающая запятая ?

Штош,

плыви !!


C++
1
2
3
4
5
6
7
#include <iostream>
 
int main() {
    setlocale(LC_NUMERIC, "ru_RU.UTF-8");
    std::cout << 3,14159;
    return 0;
}
SQL
1
SELECT 3,14159
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.02.2026, 09:23
Помогаю со студенческими работами здесь

Пытаемся прикрутить Clang к QtCreator под Windows7 x64 посредством MSYS2
По мотивам этой темы: DrOffset, а как?

Как настроить MSYS2 ?
Пользуюсь описанием тут https://www.cyberforum.ru/blogs/353967/blog3486.html Но как только ввожу...

Как подцепить отладчик msys2 CodeBlock gdb
Не понял как подцепить отладчик. CodeBlock Компилируется. Выполняется. Но как с отладкой возиться...

MSYS2 + ConEmu
Подскажите, пожалуйста, как запустить среду MSYS2 под эмулятором консоли ConEmu. Пробовал делать...

Как удалить MinGW и MSYS2?
Достаточно ли удалить одноименные папки или необходимо дополнительно чистить реестр?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru