Debugging 将vscode调试控制台与rust一起使用
我有点不确定我用的是谁的控制台。但假设我有以下调试配置:Debugging 将vscode调试控制台与rust一起使用,debugging,visual-studio-code,rust,vscode-extensions,lldb,Debugging,Visual Studio Code,Rust,Vscode Extensions,Lldb,我有点不确定我用的是谁的控制台。但假设我有以下调试配置: { "version": "0.2.0", "inputs": [ ... ], "configurations": [ { "type": "lldb", "request": "
{
"version": "0.2.0",
"inputs": [
...
],
"configurations": [
{
"type": "lldb",
"request": "attach",
"name": "Attach to...",
"program": "${workspaceFolder}/src/lib/${input:pickPackage}/target/debug/${input:pickPackage}"
}
]
}
我的程序正在macos终端上运行,带有cargo run-p…
vscode的调试器为我提供了lldb的调试控制台
说,我在一个断点,想尝试一下
到目前为止我试过生锈
script println!("{:?}", &t[op_end_index..])
File "<input>", line 1
println!("{:?}", &t[op_end_index..])
^
SyntaxError: invalid syntax
script &t[op_end_index..]
File "<input>", line 1
&t[op_end_index..]
^
SyntaxError: invalid syntax
script fn main () {println!("{:?}", &t[op_end_index..])}
File "<input>", line 1
fn main () {println!("{:?}", &t[op_end_index..])}
^
SyntaxError: invalid syntax
“你好”这个词很好,但我怎样才能达到我的实际范围呢
我应该使用lldb的脚本命令来实现吗
我的语法是什么
更新
@ForceBru感谢您对python的提示
我正在与之互动的是
在将“sourceLanguages”:[“rust”]
从添加到我的配置后,我似乎应该能够执行类似于脚本调试器的操作
但是没有运气
script debugger.evaluate("/se t[0]")
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/Users/anvlkv/.vscode/extensions/vadimcn.vscode-lldb-1.6.0/adapter/debugger.py", line 8, in evaluate
value = codelldb.evaluate_in_context(expr, True, exec_context)
File "/Users/anvlkv/.vscode/extensions/vadimcn.vscode-lldb-1.6.0/adapter/codelldb.py", line 276, in evaluate_in_context
return eval(code, eval_globals, eval_locals)
File "<string>", line 1
/se t[0]
^
SyntaxError: invalid syntax
正如有人评论的那样,您的配置似乎不正确,它正试图将您的源代码作为Python进行调试。获得正确配置的最简单方法是使用提供的模板。在您的情况下,您可能可以跳到本答案的末尾,使用其中一个“附加”配置文件,但其他配置文件可能对其他人有用
在“调试”面板中,有一个下拉列表:
如果选择“添加配置…”,则可以选择要添加的模板:
选择“LLDB:Debug Cargo Output”将把它添加到您的launch.json
文件中:
{
"type": "lldb",
"request": "launch",
"name": "Cargo launch",
"cargo": {
"args": [
"build",
"--lib"
]
},
"program": "${cargo:program}",
"args": []
},
如果您的板条箱是二进制文件,则需要将该--lib
更改为--bin
,并指定要运行的二进制文件:
{
"type": "lldb",
"request": "launch",
"name": "Cargo launch",
"cargo": {
"args": [
"build",
"--bin=foo"
]
},
"program": "${cargo:program}",
"args": []
},
对于测试,您可以选择“LLDB:Debug-Cargo-tests”。它将生成如下内容:
{
"type": "lldb",
"request": "launch",
"name": "Cargo test",
"cargo": {
"args": [
"test",
"--no-run",
"--lib"
]
},
"program": "${cargo:program}",
"args": []
},
您可能希望删除--lib
参数,以便它运行项目中的所有测试。您可以通过将它添加为尾随参数来过滤它,以便只调试您感兴趣的测试。e、 g.仅运行名称包含“foo”的测试:
要调试已在运行的程序,可以使用模板“LLDB:Attach by Name”,该模板生成:
{
"type": "lldb",
"request": "attach",
"name": "Attach",
"program": "${workspaceFolder}/foo"
},
或“LLDB:通过PID连接”:
这将为您提供正在运行的进程的可筛选列表,以便您可以选择要调试的进程
对于最后两种配置,您可能会遇到权限问题(至少在Linux上,但也可能在Mac上)。您可以通过以不同的用户身份运行可执行文件或提升VS Code的权限(例如,以sudo
启动)来解决此问题.看起来VSCode正试图使用Python解释器运行Rust代码脚本是运行内置Python解释器的lldb命令:因此脚本无法运行Rust代码并不奇怪。不幸的是,我不能帮助解决“如何调试生锈”的问题
{
"type": "lldb",
"request": "launch",
"name": "Cargo launch",
"cargo": {
"args": [
"build",
"--bin=foo"
]
},
"program": "${cargo:program}",
"args": []
},
{
"type": "lldb",
"request": "launch",
"name": "Cargo test",
"cargo": {
"args": [
"test",
"--no-run",
"--lib"
]
},
"program": "${cargo:program}",
"args": []
},
{
"type": "lldb",
"request": "launch",
"name": "Cargo test",
"cargo": {
"args": [
"test",
"--no-run",
"--lib"
]
},
"program": "${cargo:program}",
"args": ["foo"]
},
{
"type": "lldb",
"request": "attach",
"name": "Attach",
"program": "${workspaceFolder}/foo"
},
{
"type": "lldb",
"request": "attach",
"name": "Attach",
"pid": "${command:pickMyProcess}" // use ${command:pickProcess} to pick other users' processes
},