GDB编辑和搜索源码
本节主要讲解的是在 GDB 内对源文件中的代码进行修改和查找,分别对应 GDB 中的 edit 命令和 search 命令,下面是对这两个命令的详细介绍。
举个例子:
值得一提的是,GDB edit 命令编辑文件默认使用的是 ex 编译器,使用的时候可能会遇见下面的情况:
注意,上面修改编辑器的方法只是临时生效,当退出 shell 终端后配置就会被还原,下次使用的时候还要再次使用这条命令。想要永久的实现配置,需要去修改配置文件,具体做法是:修改当前 home 目录下的”~/.bashrc”文件,在文件的最后添加上述的命令就可以实现文件的永久配置(修改的是当前用户的配置文件,一般不建议修改系统的配置文件,出现问题不容易恢复)。配置完成重启 shell 终端,就可以完成配置。
search 命令的语法格式为:
使用命令时可能会下面的情况:
GDB edit命令:编辑文件
在 GDB 中编辑源文件中使用 edit 命令,该命令的语法格式如下:
(gdb) edit [location]
(gdb) edit [filename] : [location]
举个例子:
(gdb) edit 16 //表示激活文件中的第16 行的代码(光标定位到第 16 行代码的开头位置)
(gdb) edit func //表示激活文件中的 func 处的代码(光标定位到 func 函数所在行的开头位置)
(gdb) edit test.c : 16 //表示激活 test.c 文件的第16 行。
值得一提的是,GDB edit 命令编辑文件默认使用的是 ex 编译器,使用的时候可能会遇见下面的情况:
(gdb) edit
bash: /bin/ex: 没有那个文件或目录
export EDITOR=/usr/bin/vim
由此,当在 GDB 调试器中执行 edit 命令时,就会自动进入 Vim 编辑器,从而对当前调试的程序进行修改。注意,上面修改编辑器的方法只是临时生效,当退出 shell 终端后配置就会被还原,下次使用的时候还要再次使用这条命令。想要永久的实现配置,需要去修改配置文件,具体做法是:修改当前 home 目录下的”~/.bashrc”文件,在文件的最后添加上述的命令就可以实现文件的永久配置(修改的是当前用户的配置文件,一般不建议修改系统的配置文件,出现问题不容易恢复)。配置完成重启 shell 终端,就可以完成配置。
GDB search命令:搜索文件
在调试文件时,某些时候可能会去找寻找某一行或者是某一部分的代码。可以使用 list 显示全部的源码,然后进行查看。当源文件的代码量较少时,我们可以使用这种方式搜索。如果源文件的代码量很大,使用这种方式寻找效率会很低。所以 GDB 中提供了相关的源代码搜索的的 search 命令。search 命令的语法格式为:
search <regexp>
reverse-search <regexp>
使用命令时可能会下面的情况:
(gdb) search func
Expression not found