Debugging 无法在GDB中的Rust程序中获取“main”的当前行

Debugging 无法在GDB中的Rust程序中获取“main”的当前行,debugging,rust,gdb,debug-information,Debugging,Rust,Gdb,Debug Information,即使在编译时启用了调试信息,例如使用dev概要文件的常规cargo build,也无法查找当前执行的源代码行 用货物复制、生成新项目;示例项目就足够了 $cargo新helloworld rs $cd helloworld rs $cargo build $rust gdb target/debug/helloworld rs (gdb)b干管 断点1位于0x5430 (gdb)运行 启动程序:/tmp/helloworld-rs/target/debug/helloworld-rs [已启用使

即使在编译时启用了调试信息,例如使用dev概要文件的常规
cargo build
,也无法查找当前执行的源代码行

用货物复制、生成新项目;示例项目就足够了

$cargo新helloworld rs
$cd helloworld rs
$cargo build
$rust gdb target/debug/helloworld rs
(gdb)b干管
断点1位于0x5430
(gdb)运行
启动程序:/tmp/helloworld-rs/target/debug/helloworld-rs
[已启用使用libthread_db的线程调试]
使用主机libthread_db library“/usr/lib/libthread_db.so.1”。
主()
(gdb)信息行
没有可用的行号信息。
与C相比,C没有任何问题:

$cat>hw.c
这将在
main
函数处设置一个断点——但在Rust中,此函数由系统提供,并安排调用程序的real
main

相反,您通常要做的是:

(gdb) start

这将在您提供的
main
上设置一个临时断点,然后在GDB中运行
main
≠ <代码>fn干管
生锈。看起来你的问题可能会由你的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。
(gdb) start