Найти тему
Настоящий блог

Базовые элементы оптимальной работы для программиста

Чтобы добиваться оптимальной работы, надо хорошо разбираться с неоптимальными трудностями :)

Просмотрел курс на курсере Troubleshooting and Debugging Techniques

Разберем некоторые интересные инструменты, которые я нашел для себя:

страница курса
страница курса
  • strace - список всех системных вызовов.

Запуск с ключом -o поможет все это записать в файл для дальнейшего изучения. Может быть полезным, когда из логов из сообщения об ошибки до сих пор не складывается картина. Просмотрев последние вызовы, с какой-то вероятностью можно что-то понять

  • ab (ApacheBench ) - помогает лучше понять скорость работы пакетов до сервера

Как мне показлось, тот же ping, только более регулируемся и точный. Бывает полезным, если можете иметь дело с веб-сервером.

  • renice - приоритезация процесса от 0(самый приоритетный) до 19

Именно этой командой в терминале можете поменять приоритет процесса.

  • killall -STOP - остановка процесса (но не завершение). kill -CONT - дальнейший перезапуск.

Иногда может быть полезным, когда много процессов работают, а завершать их не хочется (потеря информации). Данное сочетание команд позволит их приостановить, а затем спокойно запустить, но уже так, как вам требуется

  • sqlite годная вещь, когда не нужен целый сервер, просто работа над одной базой.

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

  • memcached - помогает сэкономить на повторных запросах

В тех случаях, когда запросы могут быть однообразными и хотите сэкономить на работе с данными

  • varnish - ускоритель для http
  • valgrind - может указать на undefined behavior или баги

Если Вы пишете на С\С++, наверняка уже знаете об этой штуке. Помогает пресечь segmentation error, может указать на утечки памяти.

  • ulimit -c unlimited

Насколько я понял, эта команда может позволить получить core файлы после запуска глючной программы. Что дальше? Скормим эти core файлы в gdb

  • gdb -c core example
  • backtrace, а затем up

команды в gdb, которые позволят перейти непосредственно в месту ошибки и выше

  • iftop - консольная утилита, показывает данные работы с сетью

Не сказать, что курс какой-то суперполезный, проходится легко, если вы имеете опыт в it. А что-то новое скорей всего точно узнаете.

_____________________________________

Друзья, подписывайтесь и ставьте лайки :) Тогда я буду больше писать интересных вещей! Всем хорошего дня!