Linux下离线安装gdb及常用命令汇总
以redhat6.5虚拟机作为例子,由于工作性质,大部分情况linux的软件安装,是采用离线方式的。
1.离线安装gdb
像gcc、g++或者gdb这种常用的工具软件,一般虚拟机都会安装的,如未安装,则去镜像文件中找,一般都有。
1.1 找到并选定镜像文件
虚拟机-》设置-》CD/DVD->勾选“已连接”+“启动时连接”-》使用ISO镜像-》“选择镜像文件xxx.iso”
1.2 在终端下操作安装
(懒得挂载,直接到/medium下找文件内容,当然也可以去挂载):
cd /medium
cd RHEL_6.5.../Packages
ls -l |grep gdb
rpm -i gdb-7.2-60.el6_4.1.x86_64.rpm
rpm -qa |grep gdb 或者 rpm -qa gdb
gdb -v
-----------安装Ok。
(注意:网上的离线使用tar包,安装gdb的方法,需要匹配上对应的gcc版本,否则很麻烦。)
2.gdb 常用命令
2.1
(注意:程序要是debug版本,即编译的时候需要“-g”参数)
gdb dmhs_server --启动程序
satrt dmhs.hs -- 参数
l 10 --显示10行代码
b 行号 ---行断点
b func_name --函数断点
b *0x234235 --地址断点
r --运行
s --单步运行
“enter键” --重复上一条命令
print/p xxx -- 查看变量值
whatis xxx --变量类型查看
bt --查看堆栈
finish --结束当前函数
n --next 下一次调试
q -- 退出
until 1314 --运行到某一行,可以用来跳出for,while循环
info threads -- 查看线程信息
up 1 --返回线程的上一级函数
2.2 断点删除
delete 5
delete 1-10
2.3 清除断点
clear list_insert //删除函数的所有断点
clear list.c:list_delet //删除文件:函数的所有断点
clear 12 //删除行号的所有断点
clear list.c:12 //删除文件:行号的所有断点
2.4 每次调到 bread点的时候,都会自动的把变量值打印出来
display var1
display/a *pMen@menLen //动态内存(函数或者malloc)
display pMen //静态内存
2.5 在gdb中,可以用“set var variable=expr”命令设置变量的值
set var i = 8
3.其他gdb命令(追加)
3.1 调试方法1
ps -ef |grep edr --->输出:pid 11556
gdb
>attach 11556
>b test_pp
>c
3.2 调试方法2
gdb -p [pid]
此时被attach的进程会阻塞,进入T模式(ps 命令看到STATE为T),如果调试完毕了,使用 detach 命令就释放了进程,它就自由运行了。