Debugging Rust with GDB

debugging, gdb, rust

Solution

Same question, later Rust version (1.0.0-beta), totally different answer:

In GDB, when debugging a Rust executable, `break main` sets a breakpoint in some setup code that is part of the Rust standard library. This isn't what you want.

Instead type: `break $YOUR_CRATE::main`, substituting the name of your program for `$YOUR_CRATE`.

Problem

I'm aware of the debugging Rust questions here on Stack Overflow and I also used GDB before with Go. However, I'm running into a problem where it seems GDB is unable to locate the debug symbols. Consider this complex program in `main.rs`: ``` pub fn main () { println!("run"); } ``` I compile it with debug symbols ``` rustc -g main.rs ``` Then I run GDB ``` gdb main ``` This gives the first clue that something with the loading of debug symbols is not quite right. Now when I'm in GDB and type ``` list ``` it leaves me with some C code which isn't what I expect. What am I doing wrong? My GDB version is 7.7 and I'm on OS X 10.9.2 (13C64). My rustc version is rustc 0.11.0-pre (3035d8dfb13077e195eb056568183911c90c1b4b 2014-07-02 21:26:40 +0000). It may also be helpful to see the output of `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 ```

Original source