2017-01-04 5 views
4

Я начал изучать Rust, и я хочу настроить отладку в Visual Studio Code, но не могу заставить работать контрольные точки. Я использую Native DebugRustyCode для VS Code.Точки останова не попадают при отладке Rust с gdb в коде Visual Studio

Вот мой запуск файла:

{ 
    "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).

Если вы не хотите использовать rustup, вы должны просто переустановить сборку gnu Rust вручную.

Редактировать: Как отмечено в комментарии ниже, не забудьте перестроить!

+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 
} 

Я также использую C от Microsoft/C++ Debugger плагина, а не родной. Он по-прежнему работает для GDB.