Как я могу ограничить количество сообщений об ошибках, отображаемых после компиляции программы на C ++?

/var/lib/dpkg/info/python-apt.postinst: /usr/bin/pycompile: /usr/bin/python: плохой интерпретатор: No such file or directory

Эта ошибка указывает на то, что /usr/bin/python в некотором роде сломан. Большинство сценариев Python не смогут быть запущены.

Когда устанавливается пакет python-apt, он запускает сценарий Python. Это не удается, поэтому установка пакета не может быть завершена. Хотя APT может продолжить установку других пакетов даже в случае сбоя одного, это может потребовать запуска apt-get -f install несколько раз и может помешать обновлениям, которые перетасовывают зависимости. И в любом случае, сломанный Python сломает много программ.

$ ls -l /usr/bin/python
ls: невозможно получить доступ к /usr/bin/python: Нет такого файла или каталога
$ dpkg -S /usr/bin/python
python-minimal: /usr/bin/python

/usr/bin/python вообще не существует. Но система упаковки считает, что он установлен.

Переустановите пакет, содержащий /usr/bin/python:

sudo apt-get --reinstall install python-minimal
sudo apt-get -f install

Если отсутствие /usr/bin/python является единственной проблемой, это должно восстановить вашу систему. Но то, что вызвало исчезновение /usr/bin/python, могло вызвать и другие проблемы.

Попробуйте выяснить, что могло вызвать исчезновение /usr/bin/python. Обычно этого не происходит, если вы используете dpkg и apt для управления пакетами. Убедитесь, что если вы устанавливаете какое-либо программное обеспечение без использования менеджера пакетов, оно попадает под /opt или /usr/local, а не непосредственно под /usr.

0
26.03.2018, 10:07
3 ответа

Используйте compiling-command | head --lines 32для вывода первых 32 строк из вывода compiling-command.
Вы также можете использовать compiling-command | grep "Text to search" | head --lines 32для отображения первых 32 находок «Текст для поиска».

Отключение опции -Wallв gcc не будет выводить столько ошибок.

0
28.01.2020, 02:32

Вы можете использовать опцию -fmax-errors=1, чтобы установить количество ошибок равным 1 и так далее. Значение по умолчанию 0 означает бесконечность. Параметр gcc применяется к g++.

2
28.01.2020, 02:32

У вас есть несколько вариантов:

  • Используйте параметры компилятора, чтобы установить ограничение на количество сообщений об ошибках, прежде чем компилятор полностью сдастся, как в другом ответе.
  • Используйте head, помня, что сообщения об ошибках , конечно же, отправляются на стандартную ошибку . Или используйте один из многих инструментов, используемых после -обработки выходных данных GCC. Также помните, что в современных версиях GCC, в которых принята модель clang, одна ошибка может занимать несколько строк, поэтому небольшое количество строк для headможет быть вообще не очень полезным.
  • Используйте средство разбивки на страницы, например pager, pg, moreили less, опять же помня, что сообщения об ошибках отправляются в стандартную ошибку .
  • Запустите команду компиляции в :terminalв NeoVIM, что обеспечивает довольно много прокрутки назад и, конечно же, все обычные последовательности клавиш навигации VIM для быстрого перехода к началу вывода и поиска.
  • Интеграция с вашим текстовым редактором.

Последний вариант наиболее интересен.Он бывает как минимум двух вкусов:

  • Запишите стандартный вывод + стандартная ошибка компилятора в файл и сообщите своему текстовому редактору, что он должен обрабатывать его как файл ошибок . В Vim и NeoVIM это делается с помощью
    vim -q errors_file
    и
    nvim -q errors_file
    , где вы, конечно, можете заменить имя по вашему выбору на errors_file.

    Откроется текстовый редактор с файлом ошибок, загруженным в буфер быстрого исправления, а файл для первого сообщения об ошибке или предупреждения будет открыт и расположен в строке с номером (и столбце )этой ошибки.

  • Запустите компилятор из своего текстового редактора. С Vim и NeoVIM, если у вас есть make-файл, его можно вызвать с помощью команды :make, а VIM/NeoVIM поместит вывод ошибки при запуске makeв список быстрых исправлений, снова автоматически позиционируя файл, строку и столбец. первого сообщения об ошибке или предупреждения.

С обоими из них, конечно, можно переходить от местоположения одного предупреждения/ошибки к другому, используя :cnextи различные другие команды навигации по списку быстрых исправлений Vim/NeoVIM, перечисленные в :help :cc. Обратите внимание, что нет причин ограничивать количество ошибок с помощью этих механизмов, и есть команды Vim/NeoVIM для возврата к позиции текущего сообщения или возврата к позиции первого сообщения.

В последнем случае можно также запускать :makeнесколько раз и переключаться между старыми и новыми списками ошибок, используя :colderи :cnewer. (Можно дополнительно изменить :makeдля запуска чего-то другого, кроме make, используя set makeprg, подробнее см. руководство VIM/NeoVIM.)

Аналогичные вещи можно делать и с emacs.

1
28.01.2020, 02:32

Теги

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