use std::path::PathBuf;
pub(crate) const CDB_CANDIDATES: &[&str] = &[
r"C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe",
r"C:\Program Files\Windows Kits\10\Debuggers\x64\cdb.exe",
r"C:\Program Files (x86)\Windows Kits\10\Debuggers\x86\cdb.exe",
];
pub(crate) const CDB_ENV_VAR: &str = "WINDBG_CDB_PATH";
pub(crate) const LOOPBACK_HOSTS: &[&str] = &["localhost", "127.0.0.1", "::1"];
pub(crate) const WILDCARD_BIND: &str = "0.0.0.0";
pub(crate) fn default_bind() -> String {
"127.0.0.1:8765".into()
}
pub(crate) fn default_max_sessions() -> usize {
4
}
pub(crate) fn default_idle_secs() -> u64 {
900
}
pub(crate) fn default_attach_timeout() -> u64 {
15_000
}
pub(crate) fn default_command_timeout() -> u64 {
30_000
}
pub(crate) fn default_output_ring_bytes() -> usize {
512 * 1024
}
pub fn detect_cdb() -> Option<PathBuf> {
for p in CDB_CANDIDATES {
let pb = PathBuf::from(p);
if pb.exists() {
return Some(pb);
}
}
if let Ok(path) = std::env::var("PATH") {
for entry in std::env::split_paths(&path) {
let candidate = entry.join("cdb.exe");
if candidate.exists() {
return Some(candidate);
}
}
}
None
}