DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk

2023-12-23 11:20

本文主要是介绍DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

准备工作

因为时间的关系,我想到哪说到哪,可能没那么高的完成度。
但其实有心的人,看到这个标题,就关了本文自己能做了。
why和how to build debug version DPDK,见前两篇。这里我们准备开始。

首先,你有一台linux机器,ubuntu 还是centos均可。
然后装好vs2019或2022之类的新版本。
然后,有你需要调试的dpdk程序。
还有,在本地,有一套之前编译dpdk 的原码。编译时什么,这套原码就是什么样,当然这句是废话。

当然,在开始之前,我抱歉一下,因为我是用我们真正的工程来调的,所以,可能我没办法发所有的图。
但以后我会补上。

可以挑一个dpdk 例子,例如:
dpdk\examples\multi_process

网上也有helloworld的例子,如这位同仁的:
https://blog.csdn.net/qq_27071221/article/details/114988226

然后,第一篇中,我讲到我是因为要分析第二个secondary启动的dpdk 进程的问题,才进行这次跟踪的。
我的意思是说,如果你的程序,如果没出问题,你就不要折腾了。我这的确是有事情要处理。

假定你的工程

假定你的工程是基于CMake,并且编译和执行,都是基于一个linux shell的。
而且的工程是在arm开发板上能编译过的(注意,我的dpdk是在编译服务器交叉编译得到的)。
而且linked的 dpdk是debug版的(见前一篇)。
而且是静态link 的,因为我没有试动态的情况。大家自己尝试。

建立工程

装好visual gdb,然后如下图:继续但无需代码。
我知道大家都喜欢英文版的vs,但我不清楚我的装好后就是英文版本。最好装英文的,因为有问题到网上问的时候,时常对应不到自己的工具上。
在这里插入图片描述新建项目

在这里插入图片描述
给工程取个好名字,这点不要学我啊

在这里插入图片描述
之后的根据自己的需要
在这里插入图片描述
后面我就不一一抓图了,之后无非是选择targent机器
在这里插入图片描述
我们用的是双机调试。
原因是,目标程序是在targent上直接编译的。
你还可以选3机,如果你的arm机实在是资源特别少.
后面大家自己补充吧。
然后我们进入调试的环节。
不是我要分得这么多篇,因为的确我时间有限。
以后我可以会完善本文。
而且本文不是重点。
最后重点是单步调试。

后记:

在结束本文之前,我想说一下,有经济能力的还是买一套visual gdb。值得。
visual studio自带的,如果按百分制,微软的水平,在这件事上,只能得5分,不能再多了。
不是微软的不能用,但对你来说,投入产出比,应该是负值。
你要是花钱买了visual gdb,我认为是值得的。我会是买的。我的beyondcompare 就是买的。
这个我没买是的确支付方面,比较麻烦。
所以,我去北边国家的网站下了一个。

至于说微软的为什么差,这个我之前写过。
好的软件先定义“场景”Scenes,然后定义角色role,然后基于现有的资产,无缝地衔接。
这些微软都没有。我不想再批评微软,但这是事实。
对了,前面提到的完成度,这是我在看5分钟讲电影中学到的评价导演的话,让这里很合适。
微软不止是如Jobs所说,没有taste,这20年来,在完成度这个方面,微软很糟。

这篇关于DPDK单步跟踪(3)-如何利用visual studio 2019和visual gdb来单步调试dpdk的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Go语言网络故障诊断与调试技巧

《Go语言网络故障诊断与调试技巧》在分布式系统和微服务架构的浪潮中,网络编程成为系统性能和可靠性的核心支柱,从高并发的API服务到实时通信应用,网络的稳定性直接影响用户体验,本文面向熟悉Go基本语法和... 目录1. 引言2. Go 语言网络编程的优势与特色2.1 简洁高效的标准库2.2 强大的并发模型2.

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

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下编译

Python MCPInspector调试思路详解

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

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

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

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

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

Android Studio 配置国内镜像源的实现步骤

《AndroidStudio配置国内镜像源的实现步骤》本文主要介绍了AndroidStudio配置国内镜像源的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、修改 hosts,解决 SDK 下载失败的问题二、修改 gradle 地址,解决 gradle