Super User is a question and answer site for computer enthusiasts and power users. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

When I'm using

M-x gdb 

when lots of source files are open in emacs, the default directory in emacs is often different with the directory of my working copy to run that file i want to run. It's always painful to type the correct full path of the file which i want to debug. How could I solve this problem? Is there a way to change the current default directory to the working copy of my project?

share|improve this question

I kept editing my .emacs file, using

(setq default-directory "~/your/path") 

but found that whenever I restarted emacs, it kept defaulting to the 'original' directory.

It turned out the problem was that I had left on the default startup screen (GNU emacs 23). I think that the default welcome screen with the links to the tutorial etc, changes the default directory back to the one where the welcome screen files are to be found. I clicked on the 'customize startup' link, then switched off the welcome screen. Since then, when I open emacs it defaults to the scratch buffer, but the default-directory when I use C-x C-f is the one I set in the .emacs file.

Hope that helps someone out there, it was driving me crazy!

share|improve this answer

The current working directory is always the location of the current buffer.

One option is to go into shell-mode and then cd to the preferred directory, then anything you open, or run from within that shell-buffer will default to that directory.

share|improve this answer
it seems the directory changes randomly when i use the gdb in emacs, and i cannot get the correct directory. – Kim Feb 24 '11 at 9:37
It changes within the buffer? like you load a file, it's in directory X, you do some debugging, you load a file, and it's in some other directory Y? Does the program do any CDing itself? – Brian Postow Feb 24 '11 at 14:33

If you're in a buffer not attached to a file (like *scratch*, gnus' buffer...) you can use M-x cd to change the current directory. Just opening the directory will also do the trick.

In gdb, you can ajso just type cd /where/i/want/to/go

share|improve this answer

Normally, The current working directory is always the location of the current buffer. And gdb will use this directory automatically.

But I indeed had distressed experience that when M-x gdb, it always entered the ~ directory, and complained the target file couldn't be found.

Finally, I found this is caused by the buffer was changed unintended, and may be backed up. I realized this when I killed this buffer and reopened it. After kill and reopen the buffer, M-x gdb works well again.

From my experience, when this happens, exit emacs and restart it can't help fixing this. Just try killing the buffer and reopen the file.

share|improve this answer

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .