Есть у gdb такая опция substitute-path (http://sourceware.org/gdb/onlinedocs/gdb/Source-Path.html) и она отказывается у меня работать.
Покажу на примере:
$ cd /some/path
$ mkdir -p gdb/sub
$ cd gdb
$ vim sub/main.cpp # тут делаю тупой while(true);
$ g++ -g sub/main.cpp
$ ./a.out &
$ cd ..
$ mkdir gdb_
$ mv gdb/* gdb_
$ sudo gdb -p <pid>
...
main () at sub/main.cpp:14
14 sub/main.cpp: Нет такого файла или каталога.
(gdb) set substitute-path sub /some/path/gdb_/sub
(gdb) f
#0 main () at sub/main.cpp:14
14 in sub/main.cpp # то есть не подхватил
(gdb) directory /some/path/gdb_
(gdb) f
#0 main () at sub/main.cpp:14
14 while (true); # то есть подхватил
Вот и проблема, что substitute-path не работает, а directory - пожалуйста. Надеюсь понятно объяснил, кто-нибудь еще это использует?