Что означает это сообщение strace?

[A-Z]*равно нулю или более вхождений [A-Z]. В ##2нет вхождений [A-Z], поэтому строка совпадает. Вероятно, вам нужен один или несколько(\{1,\}(или \+с GNU grep, или совместимый ), или +с опцией -E, включающей ERE ), или просто ##[A-Z], как если бы это соответствовало ##[A-Z], он также соответствует ##[A-Z]+и наоборот -.

Также обратите внимание, что за исключением локали C/ POSIX, то, что соответствует [A-Z], не указано, а список символов (или даже, возможно, элементы сопоставления, состоящие из нескольких символов ), которым он соответствует, различается. с локалью и операционной системой. В системах GNU это, как правило, только символы латинского алфавита (, включая такие вещи, как Džили É), часто только прописные, но иногда и строчные, включая английские буквы a -z (, как в Тайская локаль для Таиланда в Ubuntu 18.04 по крайней мере ). В некоторых системах, отличных от -GNU, таких как Solaris, вы получаете гораздо более экзотические списки. Для соответствия только ABCDEFGHIJKLMNOPQRSTUVWXYZ используйте [ABCDEFGHIJKLMNOPQRSTUVWXYZ].

0
02.12.2020, 16:05
1 ответ

Из вывода strace видно, что программа ищет файл libc.mo, но здесь проблема не в этом. Файл .moсодержит перевод, и если он не найден, сообщения обычно отображаются на английском языке. Из путей,ваша локаль, кажется, en_US, поэтому вам не нужен перевод.

Подсказка к проблеме здесь:

6260  write(2, "terminate called after throwing "..., 48) = 48
6260  write(2, "Unknown error -1", 16)  = 16

Используйте больший размер для отображения усеченного сообщения после "выбрасывания"(-s 50или более ). Вероятно, он содержит имя класса исключений. Другая подсказка — «Неизвестная ошибка -1», обычно бесполезна.

Если это не просто программа, а ваша программа, запустите ее в отладчике. Вы должны получить обратную -трассировку и много другой полезной информации.

1
18.03.2021, 22:45

Теги

Похожие вопросы