How to pass RUST_BACKTRACE=1 when running a Rust binary installed in Debian?
Asked Answered
S

2

39

When I run a binary using cargo, I have the option to run it as follows -

bash -c "RUST_BACKTRACE=1 cargo run --bin my_binary"

This gives me a stack trace when the binary hits an error. But when I create a Debian package for the same binary, how do I get stack traces on failure?

Is there some way to enable backtrace there too, if the source is implemented in Rust?

Edit:

I create a debian package for my cargo project using

cargo deb // Produces a my_binary.deb

This my_binary.deb can then be installed on a Debian machine as -

 dpkg -i /tmp/my_binary*.deb || true \
 && apt-get -f -y install
Saxhorn answered 5/1, 2019 at 18:46 Comment(4)
RUST_BACKTRACE=1 cargo run --bin my_binary in a normal shell works for me under Debian. (Your question is somewhat unclear, what do you mean by "create a debian"?)Ravine
@Ravine creating a debian was indicating creating a debian package for my_binary. Have edited the question. Hope it better explains now.Saxhorn
Have you tried RUST_BACKTRACE=1 my_binary?Ravine
Thanks @starblue. It is a valid syntax to pass the flag like that while executing. Will see if the stacktrace gets printed on hitting an error.Saxhorn
S
14

I had the same issue (error message) on Linux Mint 19 after installation of alacritty (0.5.0-dev).

In terminal just run:

RUST_BACKTRACE=1 alacritty 

or RUST_BACKTRACE=full for a verbose backtrace.

RUST_BACKTRACE=full alacritty 
Sphacelus answered 6/3, 2021 at 8:14 Comment(2)
please add some details or questions if you vote down.Sphacelus
is there any way to add this to the config.toml or Cargo.toml or something like that?Dol
F
42

Just in case someone is looking for setting environment variable from source code, here is how you do it:

use std::env;
fn main() {
  // this method needs to be inside main() method
  env::set_var("RUST_BACKTRACE", "1");
}

The benefit of this approach -- in contrast to manually setting the env variable from PowerShell-- is that you won't need to turn this variable off after you run this program. That is to say, 'RUST_BACKTRACE=1' is set only for this program, not others.

Ferous answered 4/4, 2022 at 2:36 Comment(0)
S
14

I had the same issue (error message) on Linux Mint 19 after installation of alacritty (0.5.0-dev).

In terminal just run:

RUST_BACKTRACE=1 alacritty 

or RUST_BACKTRACE=full for a verbose backtrace.

RUST_BACKTRACE=full alacritty 
Sphacelus answered 6/3, 2021 at 8:14 Comment(2)
please add some details or questions if you vote down.Sphacelus
is there any way to add this to the config.toml or Cargo.toml or something like that?Dol

© 2022 - 2024 — McMap. All rights reserved.