about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2021-12-20 18:20:08 +0000
committerGitHub <noreply@github.com>2021-12-20 18:20:08 +0000
commitc5722a66c5e9173ba2775e6cc4a9cd5ec7bc5bcd (patch)
treecfa39b934917e3e26071d3f60ed737f3b8621099
parentd3aa2579ccddd1876bc71b8e8bc965d64a77d3c6 (diff)
parent4a5c8c6ad2daec6649e283d3cc2385e7d93376be (diff)
downloadrust-c5722a66c5e9173ba2775e6cc4a9cd5ec7bc5bcd.tar.gz
rust-c5722a66c5e9173ba2775e6cc4a9cd5ec7bc5bcd.zip
Merge #11073
11073: fix: Fix windows not finding the pdb file r=lnicola a=Veykril

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10371

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
-rw-r--r--crates/rust-analyzer/src/bin/main.rs12
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/rust-analyzer/src/bin/main.rs b/crates/rust-analyzer/src/bin/main.rs
index ef90610f856..567cdc48ef4 100644
--- a/crates/rust-analyzer/src/bin/main.rs
+++ b/crates/rust-analyzer/src/bin/main.rs
@@ -93,6 +93,18 @@ fn try_main() -> Result<()> {
 }
 
 fn setup_logging(log_file: Option<&Path>) -> Result<()> {
+    if cfg!(windows) {
+        // This is required so that windows finds our pdb that is placed right beside the exe.
+        // By default it doesn't look at the folder the exe resides in, only in the current working
+        // directory which we set to the project workspace.
+        // https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/general-environment-variables
+        // https://docs.microsoft.com/en-us/windows/win32/api/dbghelp/nf-dbghelp-syminitialize
+        if let Ok(path) = env::current_exe() {
+            if let Some(path) = path.parent() {
+                env::set_var("_NT_SYMBOL_PATH", path);
+            }
+        }
+    }
     if env::var("RUST_BACKTRACE").is_err() {
         env::set_var("RUST_BACKTRACE", "short");
     }