I'm trying to fix a crash my team is encountering in (Mac)Vim, which hasn't been reproducible. I've got it dumping cores, but when I load a core into gdb, it can't find the source files.
We're building MacVim through Homebrew, which builds it with -g
:
$ /usr/local/Cellar/macvim/7.3-62/MacVim.app/Contents/MacOS/Vim --version
[...]
Compilation: gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe -DMACOS_X_UNIX -no-cpp-precomp -g -O2 -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -arch x86_64 -D_FORTIFY_SOURCE=1 -I/System/Library/Frameworks/Tcl.framework/Headers -D_REENTRANT=1 -D_THREAD_SAFE=1 -D_DARWIN_C_SOURCE=1
Linking: gcc -L. -L. -Wl,-syslibroot,/Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -arch x86_64 -L/usr/local/lib -o Vim -framework Cocoa -framework Carbon -lncurses -liconv -framework Cocoa -L/usr/local/lib -L/System/Library/Perl/5.10.0/darwin-thread-multi-2level/CORE -lperl -lm -lutil -lc -framework Python -F/System/Library/Frameworks -framework Tcl -framework CoreFoundation -framework Ruby
Then we check out the source to the same revision and run gdb, loading in the core:
macvim$ gdb /usr/local/Cellar/macvim/7.3-62/MacVim.app/Contents/MacOS/Vim /cores/core.18234 -d src
But then, gdb is only aware of the sources used to build Command-T, a plugin loaded when MacVim crashed:
(gdb) info sources
Source files for which symbols have been read in:
Source files for which symbols will be read in on demand:
/Users/pivotal/.vim/bundle/command-t/ruby/command-t/matcher.c, /Users/pivotal/.vim/bundle/command-t/ruby/command-t/match.c, /Users/pivotal/.vim/bundle/command-t/ruby/command-t/ext.c
Why does gdb not try to find the sources for Vim itself? Do we need to compile it differently?