【发布时间】:2021-08-22 08:26:31
【问题描述】:
当我做(gdb) dir n m
输出如下
Source directories searched: /home/fawad/Desktop/linux-debug/linux-5.12.6/n:/home/fawad/Desktop/linux-debug/linux-5.12.6/m:$cdir:$cwd
上面的输出显然说 gdb 搜索这两个目录
1)
/home/fawad/Desktop/linux-debug/linux-5.12.6/n
` 2)
/home/fawad/Desktop/linux-debug/linux-5.12.6/m
在gdb里面做dir n m的意思是gdb搜索两个目录n和m?
$cdir:$cwd 是什么?是否应该将它们读取为cdir 目录(也在 cdir/ 目录中搜索)和(cwd 也意味着也在 $cwd/ 中搜索)
如果这是正确的,那么它是否搜索了 4 个目录?
另一个例子,当我这样做时
dir drivers
搜索哪个目录
在此页面上https://sourceware.org/gdb/current/onlinedocs/gdb/Source-Path.html 它说
'$cdir' 使 GDB 在编译目录中搜索,如果在调试信息中记录了一个。如果调试信息中没有记录编译目录,则忽略'$cdir'。
所以基本上如果我的 program.o 在 /home/user786/test_program/program.o 那么$cdir 将是 /home/user786/test_program/
$cwd 会是什么?
在它说的链接中
‘$cwd’和‘.’不一样 前者(? is it $cdir) 在 GDB 会话期间跟踪当前工作目录的变化。而后者在您向源路径添加条目时会立即扩展到当前目录
上面的行是否表明如果我在位置/home/fwd/program1 和program1 有一个名为program1 的源程序,目录包含`/home/fwd/program1/headerFiles 中的头文件,那么$cwd 可以是$cdir: /头文件/?所以 headerFiles 的总路径将是 $cdir:/$cwd 包含头文件?
问题
我可以将 $cdir 和 $cwd 与 list $cdir:/cwd/header_file_1.h 之类的列表命令和 break 命令一起使用吗?
我如何知道 program1 的某个目标文件是否在 program1/program1_part1 中包含 program_part1.o,因为我可能想调试它?
如何设置$cwd?在运行 gdb list 命令之前
【问题讨论】: