Skip to content

Commit db0d8e0

Browse files
authored
Rollup merge of rust-lang#76588 - guswynn:debug_logging, r=jyn514,Mark-Simulacrum
Add a dedicated debug-logging option to config.toml @Mark-Simulacrum and I were talking in zulip and we found that turning on debug/trace logging in rustc is fairly confusing, as it effectively depends on debug-assertions and is not documented as such. @Mark-Simulacrum mentioned that we should probably have a separate option for logging anyways. this diff adds that, having the option follow debug-assertions (so everyone's existing config.toml should be fine) and if the option is false to test I ran ./x.py test <something> twice, once with `debug-logging = false` and once with `debug-logging = true` and made sure i only saw trace's when it was true
2 parents bd3b10e + 0be66d7 commit db0d8e0

File tree

5 files changed

+27
-3
lines changed

5 files changed

+27
-3
lines changed

compiler/rustc/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,4 @@ features = ['unprefixed_malloc_on_supported_platforms']
1919
[features]
2020
jemalloc = ['jemalloc-sys']
2121
llvm = ['rustc_driver/llvm']
22+
max_level_info = ['rustc_driver/max_level_info']

compiler/rustc_driver/Cargo.toml

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ crate-type = ["dylib"]
99

1010
[dependencies]
1111
libc = "0.2"
12-
tracing = { version = "0.1.18", features = ["release_max_level_info"] }
12+
tracing = { version = "0.1.18" }
1313
tracing-subscriber = { version = "0.2.10", default-features = false, features = ["fmt", "env-filter", "smallvec", "parking_lot", "ansi"] }
1414
rustc_middle = { path = "../rustc_middle" }
1515
rustc_ast_pretty = { path = "../rustc_ast_pretty" }
@@ -38,3 +38,4 @@ winapi = { version = "0.3", features = ["consoleapi", "debugapi", "processenv"]
3838

3939
[features]
4040
llvm = ['rustc_interface/llvm']
41+
max_level_info = ['tracing/max_level_info']

config.toml.example

+8-2
Original file line numberDiff line numberDiff line change
@@ -322,13 +322,19 @@
322322
# binary, otherwise they are omitted.
323323
#
324324
# Defaults to rust.debug value
325-
#debug-assertions = false
325+
#debug-assertions = debug
326326

327327
# Whether or not debug assertions are enabled for the standard library.
328328
# Overrides the `debug-assertions` option, if defined.
329329
#
330330
# Defaults to rust.debug-assertions value
331-
#debug-assertions-std = false
331+
#debug-assertions-std = debug-assertions
332+
333+
# Whether or not to leave debug! and trace! calls in the rust binary.
334+
# Overrides the `debug-assertions` option, if defined.
335+
#
336+
# Defaults to rust.debug-assertions value
337+
#debug-logging = debug-assertions
332338

333339
# Debuginfo level for most of Rust code, corresponds to the `-C debuginfo=N` option of `rustc`.
334340
# `0` - no debug info

src/bootstrap/config.rs

+6
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ pub struct Config {
100100
pub rust_codegen_units_std: Option<u32>,
101101
pub rust_debug_assertions: bool,
102102
pub rust_debug_assertions_std: bool,
103+
pub rust_debug_logging: bool,
103104
pub rust_debuginfo_level_rustc: u32,
104105
pub rust_debuginfo_level_std: u32,
105106
pub rust_debuginfo_level_tools: u32,
@@ -379,6 +380,7 @@ struct Rust {
379380
codegen_units_std: Option<u32>,
380381
debug_assertions: Option<bool>,
381382
debug_assertions_std: Option<bool>,
383+
debug_logging: Option<bool>,
382384
debuginfo_level: Option<u32>,
383385
debuginfo_level_rustc: Option<u32>,
384386
debuginfo_level_std: Option<u32>,
@@ -587,6 +589,7 @@ impl Config {
587589
let mut debug = None;
588590
let mut debug_assertions = None;
589591
let mut debug_assertions_std = None;
592+
let mut debug_logging = None;
590593
let mut debuginfo_level = None;
591594
let mut debuginfo_level_rustc = None;
592595
let mut debuginfo_level_std = None;
@@ -630,6 +633,7 @@ impl Config {
630633
debug = rust.debug;
631634
debug_assertions = rust.debug_assertions;
632635
debug_assertions_std = rust.debug_assertions_std;
636+
debug_logging = rust.debug_logging;
633637
debuginfo_level = rust.debuginfo_level;
634638
debuginfo_level_rustc = rust.debuginfo_level_rustc;
635639
debuginfo_level_std = rust.debuginfo_level_std;
@@ -733,6 +737,8 @@ impl Config {
733737
config.rust_debug_assertions_std =
734738
debug_assertions_std.unwrap_or(config.rust_debug_assertions);
735739

740+
config.rust_debug_logging = debug_logging.unwrap_or(config.rust_debug_assertions);
741+
736742
let with_defaults = |debuginfo_level_specific: Option<u32>| {
737743
debuginfo_level_specific.or(debuginfo_level).unwrap_or(if debug == Some(true) {
738744
1

src/bootstrap/lib.rs

+10
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,16 @@ impl Build {
541541
if self.config.llvm_enabled() {
542542
features.push_str(" llvm");
543543
}
544+
545+
// If debug logging is on, then we want the default for tracing:
546+
// https://github.com/tokio-rs/tracing/blob/3dd5c03d907afdf2c39444a29931833335171554/tracing/src/level_filters.rs#L26
547+
// which is everything (including debug/trace/etc.)
548+
// if its unset, if debug_assertions is on, then debug_logging will also be on
549+
// as well as tracing *ignoring* this feature when debug_assertions is on
550+
if !self.config.rust_debug_logging {
551+
features.push_str(" max_level_info");
552+
}
553+
544554
features
545555
}
546556

0 commit comments

Comments
 (0)