我知道在StackOverflow上调试Rust的问题,我也在Go中使用gdb。但是,我遇到了一个问题,似乎gdb无法找到调试符号。
考虑一下main.rs中的这个复杂程序
pub fn main () {
println!("run");
}我用调试符号编译它。
rustc -g main.rs然后我运行gdb
gdb main这给出了第一条线索,即加载调试符号的东西是不完全正确的。

现在,当我在gdb并键入
list它留给我一些C代码,这不是我所期望的。

我做错了什么?我的gdb版本是7.7,我在OSX10.9.2 (13C64)上。我的rustc版本是rustc 0.11.0-pre (3035d8dfb13077e195eb056568183911c90c1b4b 2014-07-02 21:26:40 +0000)
查看` `gdb -配置的输出也可能有帮助
$ gdb --configuration
This GDB was configured as follows:
configure --host=x86_64-apple-darwin13.1.0 --target=x86_64-apple-darwin13.1.0
--with-auto-load-dir=:${prefix}/share/auto-load
--with-auto-load-safe-path=:${prefix}/share/auto-load
--with-expat
--with-gdb-datadir=/usr/local/share/gdb (relocatable)
--with-jit-reader-dir=/usr/local/lib/gdb (relocatable)
--without-libunwind-ia64
--without-lzma
--with-python=/System/Library/Frameworks/Python.framework/Versions/2.7
--with-separate-debug-dir=/usr/local/lib/debug (relocatable)
--with-zlib
--without-babeltrace发布于 2015-04-27 17:02:55
同样的问题,稍后的锈蚀版本(1.0.0-beta),完全不同的答案:
在GDB中,在调试锈蚀可执行文件时,break main在某些设置代码中设置一个断点,该设置代码是Rust标准库的一部分。这不是你想要的。
相反,请键入:break $YOUR_CRATE::main,将程序名称替换为$YOUR_CRATE。
发布于 2014-07-10 13:26:25
好吧,我知道出了什么问题。我必须手动发出main.o文件。我以为-g参数会把它剪掉。
现在我跑了
rustc -g main.rs --emit="obj,link"我能跑
gdb main每件事都像个苦工。
为了简单起见,我为bash创建了两个别名:
alias rd='rustc -g --emit="obj,link"'
compile_and_run() {
rustc -g --emit="obj,link" $1 && gdb ${1%.*}
}
alias rdr=compile_and_run现在,我只需调用rdr main.rs,它将开始使用gdb调试main.rs。
https://stackoverflow.com/questions/24664994
复制相似问题