GDB高级调试命令总结
2018-02-28 22:07
423 查看
常用快捷键:
ctrl+x+a 快捷键切回到传统模式
ctrl+x+o 切换窗口焦点
ctrl+x+1 显示一个src窗口
ctrl+x+2 显示两个窗口(src+asm)
常用命令行参数:
以加参数方式调试应用程序
#gdb --args ./src/netperf -H 127.0.0.1 -p 8888 -t TCP_STREAM -l 10 -- -m 128000
用gdb分析程序的dump文件或者内核的dump文件
#gdb program core
窗口切换命令:
>help layout 查看有哪些界面布局
>layout src 源码模式
>layout asm 汇编模式
>winheight src +10 调整源码窗口的高度
单步执行
>ni 汇编单步执行
>i source 查看当前源码文件的路径
>finish 执行到函数返回
内存查看命令:
>i registers $rip 查看rip寄存器的内容
>x /i $rip 以指令方式查看rip寄存器
>x /16xw xxx 以16进制方式,每块的数据类型word,连续显式16个word数据值
>x /16xb $rip+0x83d623
>x /s $rdx 以字符串的方式显示寄存器rdx中的值
>p /t dst->dev->features 打印嵌套结构体中的变量
>p &((struct sock*)0)->sk_route_caps 打印出结构体内子项的偏移
>p *(struct tcphdr *)(skb->head+skb->transport_header) 打印出结构体的所有值
>p *(fn)@12 打印数组
>p ((struct proc_inode *)((char *)inode-0x38))->op 打印container_of()功能
>set console_printk[0]=4 改变内存中的值
>set disassembly-flavor intel 设置为intel反汇编模块
>set print pretty on 设置 漂亮格式打印输出>ptype struct workqueue_struct 显示结构体定义
条件断点
使用复杂的条件断点
>commands 22
->if (vport->port_no!=4)
->bt
->c
->else
->bt
->end
使用简单的条件断点
>b 10 if index == 3
内核模块调试:
查看指定内核模块的内存加载地址
#cat /proc/modules |grep tun
为指定模块加载symbol文件
>add-symbol-file /home/dawei/nzuta/nzuta.ko 0xffffffffa0423000
ctrl+x+a 快捷键切回到传统模式
ctrl+x+o 切换窗口焦点
ctrl+x+1 显示一个src窗口
ctrl+x+2 显示两个窗口(src+asm)
常用命令行参数:
以加参数方式调试应用程序
#gdb --args ./src/netperf -H 127.0.0.1 -p 8888 -t TCP_STREAM -l 10 -- -m 128000
用gdb分析程序的dump文件或者内核的dump文件
#gdb program core
窗口切换命令:
>help layout 查看有哪些界面布局
>layout src 源码模式
>layout asm 汇编模式
>winheight src +10 调整源码窗口的高度
单步执行
>ni 汇编单步执行
>i source 查看当前源码文件的路径
>finish 执行到函数返回
内存查看命令:
>i registers $rip 查看rip寄存器的内容
>x /i $rip 以指令方式查看rip寄存器
>x /16xw xxx 以16进制方式,每块的数据类型word,连续显式16个word数据值
>x /16xb $rip+0x83d623
>x /s $rdx 以字符串的方式显示寄存器rdx中的值
>p /t dst->dev->features 打印嵌套结构体中的变量
>p &((struct sock*)0)->sk_route_caps 打印出结构体内子项的偏移
>p *(struct tcphdr *)(skb->head+skb->transport_header) 打印出结构体的所有值
>p *(fn)@12 打印数组
>p ((struct proc_inode *)((char *)inode-0x38))->op 打印container_of()功能
>set console_printk[0]=4 改变内存中的值
>set disassembly-flavor intel 设置为intel反汇编模块
>set print pretty on 设置 漂亮格式打印输出>ptype struct workqueue_struct 显示结构体定义
条件断点
使用复杂的条件断点
>commands 22
->if (vport->port_no!=4)
->bt
->c
->else
->bt
->end
使用简单的条件断点
>b 10 if index == 3
内核模块调试:
查看指定内核模块的内存加载地址
#cat /proc/modules |grep tun
为指定模块加载symbol文件
>add-symbol-file /home/dawei/nzuta/nzuta.ko 0xffffffffa0423000