GDB 在 Rust 可执行文件中找不到调试符号

Ste*_*nko 5 gdb symbols missing-symbols rust

这是带有调试设置的 Cargo.toml:

[package] 
name = "rpolysolve" 
version = "0.1.0" 
authors = ["stiv"]

[dependencies] 
[profile.dev] 
debug = true  
opt-level = 0
Run Code Online (Sandbox Code Playgroud)

正如我从控制台输出中看到的,cargo 没有删除调试符号:

Finished dev [unoptimized + debuginfo] target(s) in 5.66 secs
Run Code Online (Sandbox Code Playgroud)

我已将 gdb-7.9.1-tdm64-2 下载到 windows7 上的 C:\gdb-7.9.1-tdm64-2 文件夹。现在我尝试从项目文件夹中使用以下命令启动它:

C:\gdb-7.9.1-tdm64-2\gdb64\bin\gdb.exe ./target/debug/rpolysolve.exe

GNU gdb (GDB) 7.9.1
... GNU blablabla cut here ...
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./target/debug/rpolysolve.exe...(no debugging symbols found)...done.
Run Code Online (Sandbox Code Playgroud)

如您所见,它说没有找到调试符号,现在我可以设置断点。我怎样才能解决这个问题?

Ste*_*nko 3

好的,解决方案是切换工具链,即使二进制文件与 GNU 兼容:

rustup install stable-gnu 
rustup default stable-gnu
Run Code Online (Sandbox Code Playgroud)

我不知道msvc工具链是否有gdb.exe。

  • gnu 工具链不理解如何使用本机 Windows 可执行文件或调试符号。如果您尝试调试由“-msvc”工具链生成的 Rust 代码,可以使用任何 Windows 本机调试器,例如“windgb”、Visual Studio 或带有 C++ 调试器的 Visual Studio Code。 (2认同)