VsCode编译调试Suricata

2024-06-02 14:20
文章标签 编译 调试 vscode suricata

本文主要是介绍VsCode编译调试Suricata,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原理:

Suricata 源码说到底也是一个makefile项目,Code 是绝对可以编译的,本质上还是模拟 make 命令,然后使用GDB调试c程序。

有一个视频: https://www.bilibili.com/video/BV1Aw4m1U7Mo/?vd_source=b6d10e8288ab2f9afe2227a94446a6c3

c_cpp_properties.json:

实际上这部分是关于 代码悬停提示,智能提示这一方面的,

关于includepath和browse ->path的介绍有一个视频:https://www.bilibili.com/video/BV1Hm411r7nq/?vd_source=b6d10e8288ab2f9afe2227a94446a6c3

{"configurations": [{"name": "daxian-2023-12-24","includePath": ["${workspaceFolder}/**","/usr/include/**","/usr/local/include/**","/usr/include/netinet/**"],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "gcc-x64","browse": {"path": ["${workspaceFolder}","/usr/include/netinet"],"limitSymbolsToIncludedHeaders": true,"databaseFilename": ""},"configurationProvider": "ms-vscode.makefile-tools"}],"version": 4
}

settings.json

这其实和编译无关,涉及到一些 vsocode 的配置

{"window.zoomLevel": 0.5,"files.exclude": {"**/.exe": true  //排除尾缀为.exe的文件不在编辑器左边的目录菜单中显示},// "C_Cpp.intelliSenseEngine": "Tag Parser",/*或者是default模式(默认也是这个)*/"C_Cpp.exclusionPolicy": "checkFilesAndFolders","C_Cpp.default.intelliSenseMode": "gcc-x64","C_Cpp.default.compilerPath": "/usr/bin/g++","C_Cpp.default.cppStandard": "c++17","debug.onTaskErrors": "abort","files.associations": {"iostream": "cpp","suricata-common.h": "c","cstdlib": "c","array": "c","istream": "c","ostream": "c","tuple": "c","type_traits": "c","utility": "c","fstream": "c","streambuf": "c","queue.h": "c","deque": "c","string": "c","unordered_map": "c","vector": "c","string_view": "c","initializer_list": "c","functional": "c","threads.h": "c","threadvars.h": "c","util-lua.h": "c","util-lua-http.h": "c","detect-threshold.h": "c","*.tcc": "c","numeric": "c","sstream": "c","detect-engine-register.h": "c","detect-engine-build.h": "c"},"C_Cpp.errorSquiggles": "enabled","workbench.editor.wrapTabs": false,/*选项卡是否换行*/"editor.wordWrap": "off",/*编辑区域是自动换行*/// "editor.renderWhitespace": "all"/*让空格显示为点  selection*/}

tasks.json

执行编译任务, ctrl+b执行编译任务,会选择第一个make

{"version": "2.0.0","tasks": [{"label": "build_suricata","type": "shell","command": "make",  //suricata编译"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"presentation": {"echo": true,"reveal": "always","focus": false,"panel": "dedicated","showReuseMessage": false,"clear": true}},//下面是C++的不予理会{"type": "shell",  //或者是process 区别找文档"label": "C/C++: g++ build active file", //任务标签"command": "/usr/bin/g++","args": ["-g","-Wall","-std=c++17","${fileDirname}/*.cpp","-o","${fileDirname}/${fileBasenameNoExtension}"],"detail": "compiler: /usr/bin/g++","group": {"kind": "build","isDefault": true},"presentation": {"echo": true,"reveal": "always", //是否将集成终端面板置于前面"focus": true, //是否获得焦点"panel": "dedicated","showReuseMessage": false, //控制是否显示“终端将被任务重用,按任意键关闭它”消息"clear": true // 运行前清除终端},"problemMatcher": ["$gcc"]},],"options": {"shell": {"executable": "/bin/bash","args": ["-c"]},"env": {"PATH": "/usr/bin:${env:PATH}"}}
}//官方文档:https://code.visualstudio.com/docs/editor/tasks

launch.json

make 以后不用make install的

make编译之后会在src/.libs/下生成临时的可执行程序, gdb可以调试这个程序,args是执行调试时候加入的参数,--runmode  single是只有一个处理线程的模式,(参照suricata的运行模式,要注意不是任何情况下都有single模式的),这里读入的流量是从pcap文件中拿到的(这个文件是通过wireshark抓包工具得到的),关于这些参数在这里

{"version": "0.2.0","configurations": [{"type": "cppdbg","request": "launch","name": "DeBug_suricata","program": "${workspaceFolder}/src/.libs/suricata",// "program": "/usr/local/bin/suricata",  //make install 后可执行程序的安装位置"args": ["--runmode","single","-r", "/home/daxian/ping.pcap","-vvvv","-c","/home/daxian/Desktop/zs/suricata-6.0.8/suricata.yaml","-l","/home/daxian/Desktop/zs/suricata-log-dir","-S","/home/daxian/Desktop/zs/rules/test.rules","-k","none"// "-i",// "ens33",// "--list-keywords=csv",// "--list-app-layer-protos"],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","preLaunchTask": "build_suricata"},//下面是c++的 不予理会{"name": "g++ - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "/usr/bin/gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++ build active file"},]
}

这篇关于VsCode编译调试Suricata的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1024211

相关文章

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

IDEA如何实现远程断点调试jar包

《IDEA如何实现远程断点调试jar包》:本文主要介绍IDEA如何实现远程断点调试jar包的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录问题步骤总结问题以jar包的形式运行Spring Boot项目时报错,但是在IDEA开发环境javascript下编译

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

Python MCPInspector调试思路详解

《PythonMCPInspector调试思路详解》:本文主要介绍PythonMCPInspector调试思路详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋... 目录python-MCPInspector调试1-核心知识点2-思路整理1-核心思路2-核心代码3-参考网址

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

VSCode中配置node.js的实现示例

《VSCode中配置node.js的实现示例》本文主要介绍了VSCode中配置node.js的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一.node.js下载安装教程二.配置npm三.配置环境变量四.VSCode配置五.心得一.no

Linux系统调试之ltrace工具使用与调试过程

《Linux系统调试之ltrace工具使用与调试过程》:本文主要介绍Linux系统调试之ltrace工具使用与调试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、ltrace 定义与作用二、ltrace 工作原理1. 劫持进程的 PLT/GOT 表2. 重定

vscode不能打开终端问题的解决办法

《vscode不能打开终端问题的解决办法》:本文主要介绍vscode不能打开终端问题的解决办法,问题的根源是Windows的安全软件限制了PowerShell的运行,而VSCode默认使用Powe... 遇到vscode不能打开终端问题,一直以为是安全软件限制问题,也没搜到解决方案,因为影响也不大,就没有管

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模