diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-10-16 10:03:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-16 14:03:42 +0000 |
commit | f94cdd1723ebfed265c17fb4def13c9ce17c3e06 (patch) | |
tree | 8943e454b644f0496a08fb0eba660ee882327cba /cli/main.rs | |
parent | 19cb0d949a147097fbc03a95a07bd6bf8f7b9571 (diff) |
chore: add dhat feature (#26285)
Diffstat (limited to 'cli/main.rs')
-rw-r--r-- | cli/main.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/cli/main.rs b/cli/main.rs index 360307d75..d99a4c402 100644 --- a/cli/main.rs +++ b/cli/main.rs @@ -61,6 +61,10 @@ use std::ops::Deref; use std::path::PathBuf; use std::sync::Arc; +#[cfg(feature = "dhat-heap")] +#[global_allocator] +static ALLOC: dhat::Alloc = dhat::Alloc; + /// Ensures that all subcommands return an i32 exit code and an [`AnyError`] error type. trait SubcommandOutput { fn output(self) -> Result<i32, AnyError>; @@ -387,6 +391,9 @@ pub(crate) fn unstable_exit_cb(feature: &str, api_name: &str) { } pub fn main() { + #[cfg(feature = "dhat-heap")] + let profiler = dhat::Profiler::new_heap(); + setup_panic_hook(); util::unix::raise_fd_limit(); @@ -407,7 +414,12 @@ pub fn main() { run_subcommand(Arc::new(flags)).await }; - match create_and_run_current_thread_with_maybe_metrics(future) { + let result = create_and_run_current_thread_with_maybe_metrics(future); + + #[cfg(feature = "dhat-heap")] + drop(profiler); + + match result { Ok(exit_code) => std::process::exit(exit_code), Err(err) => exit_for_error(err), } |