时间:2021-07-01 10:21:17 帮助过:15人阅读
原文档里是一个调试过程,只是我想这里我已经把gdb的经常使用功能介绍了一遍,基本上
能够用来调试程序了。
:-)
运行GDB(一些具体的说明):
前面已经提到过怎样运行GDB了,如今让我们来看一些更有趣的东西。你能够在运行
GDB时通过很多命令行參数指定大量的參数和选项。通过这个你能够在一開始就设置好
程序运行的环境。
这里将要描写叙述的命令行參数覆盖了大多数的情况。其实在一定环境下有的并没有
什么大用处。最通常的命令就是使用一个參数:
你也能够为你要运行的文件指定一个进程号:
$gdb <可运行文件名称> <进程号> 如:&gdb os 1234将使gdb与进程1234相联系(attach)
除非你还有一个文件叫1234的。
gdb首先检查一个core文件。
假设你是使用一个远程终端进行远程调试的话。那假设你的终端不支持的话,你将无法
使用第二个參数甚至没有core dump。假设你觉得开头的提示信息比較碍眼的话,你能够
用gdb -silent。
你还能够用命令行參数更加具体的控制GDB的行为。
打入gdb -help或-h 能够得到这方面的提示。全部的參数都被依照排列的顺序传给gdb
除非你用了-x參数。
当gdb開始运行时,它把不论什么一个不带选项前缀的參数都当作为一个可运行文件或core
文件(或进程号)。就象在前面加了-se或-c选项。gdb把第一个前面没有选项说明的參数
看作前面加了-se 选项,而第二个(假设有的话)看作是跟着-c选项后面的。
很多选项有缩写。用gdb -h能够看到。
在gdb中你也能够随意的把选项名掐头去尾。仅仅
要保证gdb能推断唯一的一个參数即可。
在这里我们说明一些最经常使用的參数选项
-symbols <文件名称>(-s <文件名称>)——从<文件名称>中读去符号。
-exec <文件名称>(-e <文件名称>)—-在合适的时候运行<文件名称>来做用正确的数据与core
dump的作比較。
-se <文件名称>——从<文件名称>中读取符号并把它作为可运行文件。
-core <文件名称>(-c <文件名称>)–指定<文件名称>为一个core dump 文件。
-c <数字>—-连接到进程号为<数字>,与attach命令类似。
-command <文件名称>
-x <文件名称>—–运行gdb命令,在<文件名称>指定的文件里存放着一序列的gdb命令。就
象一个批处理。
-directory(-d) <路径>—指定路径。把<路径>添加到搜索原文件的路径中。
-m
-mapped—-
注意这个命令不是在全部的系统上都能用。假设你能够通过mmap系统调用来获得内存
映象文件,你能够用这个命令来使gdb把你当前文件里的符号写入一个文件里,这个文件
将存放在你的当前路径中。假设你调试的程序叫/temp/fred那么map文件就叫
./fred.syms这样当你以后再调试这个程序时。gdb会认识到这个文件的存在,从而从这
个文件里读取符号,而不是从可运行文件里读取。
.syms与主机有关不能共享。
-r
-readnow—立即从符号文件里读取整个符号表,而不是使用缺省的。缺省的符号表是
调入一部分符号。当须要时再读入一部分。这会使開始进入gdb慢一些,但能够加快以后
的调试速度。
-m和-r一般在一起使用来建立.syms文件
接下来再谈谈模式的设置(请听下回分解 :-))
附:在gdb文档里使用的调试样例我找到了在minix下有这个程序,叫m4有兴趣的
能够自己去看看
如今我们来聊聊gdb运行模式的选择。
我们能够用很多模式来运行gdb。比如在“批模式”
或“安静模式”。这些模式都是在gdb运行时在命令行作为选项指定的。
-nx‘
-n’
不运行不论什么初始化文件里的命令。
(一般初始化文件叫做`.gdbinit’).普通情况下在
-quiet‘
-q’
“安静模式”。不输出介绍和版权信息。
这些信息在“批模式”中也被跳过。
-batch‘
“批模式”。在“批模式”下运行。
当在命令文件里的全部命令都被成功的运行后
gdb返回状态“0”,假设在运行过程中出错,gdb返回一个非零值。
“批模式”在把gdb作为一个过滤器运行时非常实用。比方在一台远程计算机上下载且
运行一个程序。信息“ Program exited normally”(通常是当运行的程序正常结束
时出现)不会在这样的模式中出现。
-cd DIRECTORY’
把DIRECTORY作为gdb的工作文件夹。而非当前文件夹(一般gdb缺省把当前文件夹作为工作目
录)。
-fullname‘
-f’
GNU Emacs 设置这个选项,当我们在Emacs下。把gdb作为它的一个子进程来运行时,
Emacs告诉gdb按标准输出完整的文件名称和行号。一个可视的栈内容。这个格式跟在
文件名称的后面。行号和字符又一次按列排,Emacs-to-GDB界面使用/032字符作为一个
显示一页原文件的信号。
`-b BPS’
为远程调试设置波特率。
`-tty DEVICE’
使用DEVICE来作为你程序的标准输入输出。
GDB 调试器使用手冊
标签:打印 mac over file ini dump border main proc