Logo

Developer learning path

Rust

Логирование и отладка в Rust

Логирование и отладка

20

#description

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

В Rust используется макрос-библиотека log, которая предоставляет унифицированный интерфейс для логирования различных уровней. В ней предопределены следующие уровни логирования: trace, debug, info, warn, error.

Для использования log сначала необходимо настроить логирование в своем проекте, включив соответствующий рендерер логов. Например, можно использовать рендерер env_logger.

Добавьте в Cargo.toml следующую зависимость:

                    
[dependencies]
env_logger = "0.8"
                  

Далее, в файле с вашим кодом, в коде main() можно настроить логирование и включить его:

                    
#[macro_use]
extern crate log;

use env_logger::Builder;

fn main() {
    Builder::new().parse("debug").init().unwrap();

    debug!("This is a debug message");
    info!("This is an info message");
    warn!("This is a warning message");
    error!("This is an error message");
}
                  

Теперь при запуске проекта вы увидите лог сообщения:

                    
2021-08-22T14:16:44.802631Z DEBUG my_project: This is a debug message
2021-08-22T14:16:44.802771Z  INFO my_project: This is an info message
2021-08-22T14:16:44.802794Z  WARN my_project: This is a warning message
2021-08-22T14:16:44.802814Z ERROR my_project: This is an error message
                  

Кроме логирования, в Rust также можно использовать отладчик. Для этого можно использовать встроенный в Rust отладчик gdb. Чтобы использовать gdb с вашим проектом, вам сначала нужно установить его на свой компьютер.

После этого задайте следующие параметры для rustc для компиляции вашего проекта:

                    
#![allow(dead_code)]
#![allow(unused_variables)]

fn foo() {
    println!("Hello, world!");
    let x = 5;
    let y = x + 1;
}

fn main() {
    let x = 42;
    let y = x * 2;

    foo();

    let msg = "Hello, universe!";
    println!("{}", msg);
}
                  

Запустите скомпилированный бинарный файл с помощью команды gdb <binary>. Вы попадете в интерактивный режим отладчика gdb.

Например, можно установить точку останова в функции foo и вывести значение переменных:

                    
(gdb) break foo
(gdb) run
(gdb) print x
(gdb) print y
                  

Как только Вы установили точку останова, выполните команду run чтобы запустить программу. Отладчик остановится на установленной точке останова. Вы можете продолжить выполнение программы, нажав клавишу c на своей клавиатуре.

Кроме gdb в Rust также есть другие удобные отладчики, например lldb, rust-gdb, rr. Они также поддерживают большинство технических возможностей, которые вы используете при отладке в других языках программирования.

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

March 27, 2023

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

Если же непонятен весь вопрос, то нажмите на кнопки внизу, чтобы получить новый вариант объяснения, практические примеры или критически оценить сам вопрос.