"流程启动失败:未知错误"当试图通过LLDB运行Rust程序时

时间:2018-04-15 22:52:26

标签: windows rust lldb

我无法在Windows 10上使用LLDB启动Rust二进制文件:

> cat test.rs
fn main() {
    println!("hello");
}
> rustc --version --verbose
rustc 1.25.0 (84203cac6 2018-03-25)
binary: rustc
commit-hash: 84203cac67e65ca8640b8392348411098c856985
commit-date: 2018-03-25
host: x86_64-pc-windows-msvc
release: 1.25.0
LLVM version: 6.0
> rustc -g test.rs
> .\test.exe
hello
> lldb --version
lldb version 6.0.0 (https://github.com/llvm-mirror/lldb.git revision 38001b27c9f319a3112271ca44fa0e1912583570)
  clang revision b3bac44cb354b63214b16fab24b5c0ffd392ec02
  llvm revision bbbe81ad6ad6db7ccb332df1f1932a5589a7eeca
> lldb test.exe
(lldb) target create "test.exe"
Current executable set to 'test.exe' (x86_64).
(lldb) process launch
error: process launch failed: unknown error

LLDB适用于我系统上的其他可执行文件,例如:

> lldb C:\Windows\system32\cmd.exe
(lldb) target create "C:\\Windows\\system32\\cmd.exe"
Current executable set to 'C:\Windows\system32\cmd.exe' (i686).
(lldb) process launch
Process 15944 launching
(lldb) Process 15944 launched: 'C:\Windows\system32\cmd.exe' (i686)

LLDB和Rust都是全新安装。

有没有办法从LLDB获取更多关于它为什么不起作用的信息?

1 个答案:

答案 0 :(得分:1)

我不相信您可以使用LLDB在Windows上调试64位Rust程序。

LLDB home page states

  
      
  • i386(*)
  • 的Windows本地用户空间调试   
     

(*)正在积极开发对Windows的支持。基本   功能有望提高,功能也在不断改进   迅速。

Visual Studio Code states的LLDB扩展(强调我的):

  

目前,已知LLDB的Windows端口仅可靠地工作   使用32位二进制文​​件和DWARF调试信息:

     
      
  • LLDB对MSVC .PDB调试信息格式的支持不完整。只有DWARF调试信息可靠地工作。
  •   
  • 64位LLDB非常不稳定,因此我不建议使用它。不幸的是,32位调试器仅限于调试32位   仅处理。
  •   
     

实际上,上述意味着对于C ++程序,您需要   用i686 MinGW工具链编译(不是MSVC!)。 对于Rust你需要   使用i686-pc-windows-gnu

因此,在这个时间点,我不建议尝试使用LLDB。由于您已安装MSVC工具链,我建议您调查安装本机的内容,例如WinDbg

WinDbg on 64-bit Rust program