代码拉取完成,页面将自动刷新
CentOS8(发行版)
yum install -y gdb
gdb -v #查看安装版本
源码安装 查看 2. 使用源码安装
suricata -i enp1s0 #无rules跑一网卡的数据
gdb suricata #进入suricata
q #退出gdb
run -i enp1s0 #启动 enp1s0 是网口名称
gdb suricata -tui #启动文件可视化
b | break 7(num) #打断点到第几行
tb| tbreak #设置临时断点, 到达后自动删除
b | break filename num #在指定文件对应的行设置断点
b | break 0x23f5ff #用于在内存某一个位置暂停
b | break num if 条件 #条件断点
i | info break|b #查看所有断点信息
d | delete 断点编号 #删除对应的断点
d | delete 7-10 #删除断点编号7-10之间的所有断点
clear num #要清除的断点行号 num
disable|enable 7 #禁用|开启 断点
r #程序直接运行,不停下来
start #主程序停下来, n/回车即可单步执行
b *0x7ffff7dd02 #给汇编指令打断点, 然后n单步调试
b main #直接在main函数上打断点
step #进入方法中调试
i registers #查看所有寄存器的值
i registers rbx #查看寄存器rbx的值
i line [num] #查看源码行数所在的汇编地址和对应的函数
starti #调试汇编指令, 开始执行 _start 时候, 指令开始停下来, 在这里可以调试汇编
nexti | ni #对汇编指令逐行调试
stepi #进入下一个方法的第一行汇编
set disassembly-flavor intel/att #显示汇编风格为intel/att(默认为att), 设置完之后, 需要执行指令 disassemble, 让汇编以新的格式显示
disassemble #刷新汇编显示(带格式)
layout src #显示源代码窗口
layout asm: #显示汇编窗口
layout regs: #显示源代码/汇编和寄存器窗口
layout split: #显示源代码和汇编窗口
layout next: #显示下一个layout
layout prev: #显示上一个layout
Ctrl + L #刷新窗口
Ctrl + x #再按1:单窗口模式,显示一个窗口
Ctrl + x #再按2:双窗口模式,显示两个窗口
Ctrl + x #再按a:回到传统模式,即退出layout,回到执行layout之前的调试窗口。
n | next #单步执行,不会进入子函数
s | step #单步执行,进入子函数
c | continue #程序接着执行
finish #一直运行到函数返回并打印函数返回时的堆栈地址和返回值及参数值等信息
whatis 变量 #打印某个变量类型
p | print + 变量/表达式 #用于打印变量或表达式的值
set + 变量 = 变量值 #改变程序中某个变量的值
return 返回值 #改变当前程序流程,直接返回
call 函数 #在当前位置执行所要运行的函数
awatch|watch 变量 #设置一个观察点,当变量被读出或是被写入的时候被暂停
rwatch + 变量 #设置一个观察点,当变量被读出时,程序被暂停
catch #设置捕捉点来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是C++的异常
tcatch #只设置一次捕捉点,当程序停住以后,应点被自动删除
bt | backtrace #查看详细的堆栈信息
frame 1 #查看指定的栈帧
info reg #查看寄存器的使用情况
info stack #查看堆栈的使用情况
up/down #跳到上一层/下一层函数
本人的目录是 /home/hgx/suricata-6.0.2
远程安装插件如下 C/C++ 和 GDB Debug 即可
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "/usr/local/bin/suricata", //要启动的程序命令
"args": [ //要启动的程序命令参数
"-i",
"enp1s0"
],
"stopAtEntry": true, //在程序进入main函数的时候停止
"console":"none",
"MIMode": "gdb",
"cwd": "${workspaceFolder}"
}
]
}
效果图如下
"console":"none"
vscode 虽然集成了,但是调试的时候不能显示汇编窗口, 需要在调试控制台使用 -exec 指令执行查看汇编, -exec disassemble /m
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。