2009-07-09 237 views
17

如何在unix中提到gdb以遞歸方式在單個目錄內搜索源文件 例如 如果在一個模塊中存在一些不同的構建塊。 a是b,c,d的父目錄,其中b,c,d是子目錄。 和源文件分佈在b,c,b。 我只需要提到gdb,所有源文件都位於(父目錄)中。 哪個gdb將用作參考並在調試程序時遞歸搜索源文件。gdb搜索源目錄

回答

16

或者你也可以做這樣的事情,在目錄srcdir調試程序prog帶源:

gdb `find srcdir -type d -printf '-d %p '` prog 

我認爲這是一個更直接的回答你的問題。如果您的可執行文件不包含編譯目錄和/或您沒有版本6.6及以上版本的gdb,這也很有用。

5
(gdb) help files 
Specifying and examining files. 

List of commands: 

add-shared-symbol-files -- Load the symbols from shared objects in the dynamic linkers link map 
add-symbol-file -- Load symbols from FILE 
add-symbol-file-from-memory -- Load the symbols out of memory from a dynamically loaded object file 
cd -- Set working directory to DIR for debugger and program being debugged 
core-file -- Use FILE as core dump for examining memory and registers 
directory -- Add directory DIR to beginning of search path for source files 
edit -- Edit specified file or function 
exec-file -- Use FILE as program for getting contents of pure memory 
file -- Use FILE as program to be debugged 
forward-search -- Search for regular expression (see regex(3)) from last line listed 
generate-core-file -- Save a core file with the current state of the debugged process 

(gdb) help directory 

Add directory DIR to beginning of search path for source files. 
Forget cached info on source file locations and line positions. 
DIR can also be $cwd for the current working directory, or $cdir for the 
directory in which the source file was compiled into object code. 
With no argument, reset the search path to $cdir:$cwd, the default. 
21

你需要的是命令set substitute-path

(gdb) set substitute-path /usr/src/include /mnt/include 

只適用於gdb的最新版本(6.6+)。

+0

「設置目錄」也可用於最新版本。 – ernesto 2014-04-23 05:29:33