2017-01-04 110 views
4

我開始學習Rust,並且想在Visual Studio Code中設置調試,但無法獲得斷點工作。我使用本地調試& VS代碼的RustyCode擴展。在Visual Studio中用gdb調試Rust時,斷點沒有命中代碼

這裏是我的啓動文件:

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "name": "Debug", 
      "type": "gdb", 
      "request": "launch", 
      "target": "target/debug/test", 
      "cwd": "${workspaceRoot}" 
     } 
    ] 
} 

但是當我運行這個配置,斷點沒有被擊中。我看到在調試器啓動和應用程序運行得很好的調試控制檯,但有一個警告信息「沒有加載符號」:

No symbol table is loaded. Use the "file" command. 
No symbol table is loaded. Use the "file" command. 
Running executable 
[New Thread 32168.0x81e0] 
[New Thread 32168.0x3360] 
[New Thread 32168.0x61b8] 
[New Thread 32168.0x8040] 
The program "+ + * - /" calculates the value 1 
[Thread 32168.0x61b8 exited with code 0] 
[Thread 32168.0x3360 exited with code 0] 
[Thread 32168.0x8040 exited with code 0] 
[Inferior 1 (process 32168) exited normally] 

這裏是source of the app I am using。我怎樣才能讓斷點工作?

+0

什麼是您正在使用的gdb版本? – ks1322

+0

GNU gdb(GDB)7.9.1 – vmg

回答

4

我遇到同樣的問題,直到我意識到我正在使用msvc構建rustc

GDB只應該有gnu合作建立,所以如果你使用rustup,該解決方案是爲rustup default stable(或β/夜間)一樣簡單。 GNU是默認的,對於msvc你需要做stable-msvc)。

如果你不想使用鏽蝕,你應該手動重新安裝Rust的GNU版本。

編輯:正如在下面的評論中指出的,不要忘記重新構建!

+1

如果你想知道爲什麼它仍然不能像我一樣工作,不要忘記重新構建! – Kevin

+0

在Windows上msvc是rustup的默認設置 https://github.com/rust-lang-nursery/rustup.rs#working-with-rust-on-windows – dschaeffer

1

我曾與斷點類似的問題,發現加入這行來settings.json固定它:

{ 
    "debug.allowBreakpointsEverywhere": true 
} 

我也使用Microsoft的C/C++調試器插件,而不是本地的。它仍然適用於GDB。

相關問題