自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 使用USB Gadget框架让USB变成串口设备

使用USB Gadget框架定义特殊的USB设备

2022-12-20 17:53:57 4093 1

原创 基于RK3328平台构建ATF固件

基于RK3328平台构建ATF固件

2022-12-13 17:52:52 836

原创 针对RK3328平台搭建支持KVM的Linux环境

针对RK3328平台搭建支持KVM的Linux环境

2022-11-29 17:11:58 1711

原创 基于DRM框架的HDMI热插拔流程分析

基于DRM框架的HDMI热插拔流程分析

2022-11-28 19:05:12 2279

原创 Android高级调试之surfaceflinger(上)

Android高级调试之surfaceflinger(上)

2022-10-10 18:04:50 1401 1

原创 使用NDB调试网络栈

使用NDB调试网络栈

2022-09-27 17:23:21 505

原创 使用NDB调试Linux内核的线程切换过程

使用NDB调试Linux内核的线程切换过程

2022-09-27 17:04:25 799

原创 使用NDB调试Linux字符设备

使用NDB调试Linux字符设备

2022-09-27 16:55:37 682

原创 通过Perf分析GDK8观看视频卡顿的原因

使用Perf分析视频播放卡顿的原因

2022-09-23 09:21:17 451

原创 在GDK8下观察glibc堆

GDK8产品主页:https://www.nanocode.cn/#/gdk8/indexglibc堆布局介绍在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址向高地址方向增长。我们一般称管理堆的那部分程序为堆管理器。堆在系统中 的布局可以分成两大类,分别是main_arena主场地和non_main_aren辅场地。main_arena主场地的布局如下图所示:在main_arena中,当程序第一次动态分配内

2021-11-16 16:18:44 613

原创 通过GDK8观察堆

实验环境主机: Windows 10;64位;专业版调试工具为Nano Code目标机: GDK8 Ubuntu 18.04;64位 ArmV8架构 Nano Debugger;用于支持符号化的Linux应用程序调试通过GDK8观察堆 堆是什么?--》在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性区域,它由低地址...

2021-10-11 18:12:19 638

原创 通过GDK7观察神秘的IDT

1.中断描述符表概述中断应该是一个覆盖范围较广的概念,在很多时候我们都会需要“中断”,比如当你用水壶烧水时,你并不需要一直盯着它,可以抽身去做一些别的的事情,当水壶完成烧水的任务,他可能会发出“嘟嘟嘟”的声音来告诉你水烧好了,因此你既完成了一些别的事情,同时又有了热水喝;在计算机中,中断也是如此,CPU的时间较为宝贵,并不可能所有的事情都亲历亲为,也不可能非要盯着一件事情,等这件事情结束后再去做下一件事情,因此CPU会通过下达任务的方式给其他执行单元,在执行单元做任务的过程中,CPU可以...

2021-09-16 19:58:06 375

原创 Nano Code扩展之!address命令

!address命令的介绍 !address命令用于显示内存描述符内信息的命令。地址空间描述符----mm_struct在Linux中有一种名为task_struct的结构体,专门负责记录进程的信息,因此他也被称为是进程描述符;不难想象,一个进程它拥有许许多多的信息,因此负责描述它的task_struct结构体也必然非常庞大,数一下大概有几百个字段吧,而这其中又有不少的指针成员,这些指针成员内存有的地址会指向对应的结构体。在这些指针成员中有两个较为...

2021-09-10 18:28:25 242

原创 Nano Code扩展之获取进程task_struct结构体的信息

基本概念的说明在Linux中task_struct结构体内存储着进程的信息;在Nano Code或WinDBG中可以通过[dt task_struct]命令查看task_struct结构体中存储的信息,当然也可以通过[dt task_struct 地址]查看进程对应的task_struct结构体内存储的信息。list_head结构体是Linux中提供的双向循环链表;list_head结构体的定义在下方能看到。struct list_head { s...

2021-08-27 18:57:49 376

原创 WinDBG插件编写介绍及在Nano Code中加载扩展

穷理者,因其所已知而及其所未知,因其所已达而及其所未达。人之良知,本所固有。然不能穷理者,只是足于已知已达,而不能穷其未知未达,故见得一截,又不曾见得一截,此其所以于理未精也。然仍须功夫日日增加。今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。借钟馗与GDK7之合力捉”鬼“,保佑代码平安顺利、风调雨顺,再无”鬼怪出现“。Nano Code与WinDBG 最近在使用GDK...

2021-08-09 18:24:48 549

原创 Nano Code扩展(一)-简单说明

Nano Code扩展说明 扩展也可以被称为是插件,通过DLL以导出函数的形式供调试器加载扩展;扩展用于实现用户自定义的功能,便于用户基于自己的调试需求去扩展调试功能。无论是Nano Code还是WinDBG都拥有着丰富的扩展命令;但即使是这样,也难免也会有一些不足之处,让用户在调试过程中觉得现有的命令并不大够用,扩展也因此而出现。Nano Code是一款功能强大的调试器,它兼容WinDBG;因此在WinDBG上可以使用的扩展在Nano Code上也可以照常使用。 在调试器中以!开...

2021-08-05 18:51:01 486

原创 在调试器下看Panic机制及oops信息分析

穷理者,因其所已知而及其所未知,因其所已达而及其所未达。人之良知,本所固有。然不能穷理者,只是足于已知已达,而不能穷其未知未达,故见得一截,又不曾见得一截,此其所以于理未精也。然仍须功夫日日增加。今日既格得一物,明日又格得一物,工夫更不住地做。如左脚进得一步,右脚又进一步;右脚进得一步,左脚又进,接续不已,自然贯通。借钟馗与GDK7之合力捉”鬼“,保佑代码平安顺利、风调雨顺,再无”鬼怪出现“。oops 当你见到oops这个单词时,第一时间想...

2021-07-26 17:42:02 1674

原创 在调试器下观察Linux内核是如何发送数据包的

本文通过使用GDK7调试套件在Linux内核下观察信息发送过程1. TCP/IP参考模型与OSI参考模型TCP/IP参考模型与OSI参考模型的关系,如图1.1所示。图1.1 TCP/IP参考模型与OSI参考模型的关系2. 观察信息发送的过程2.1 应用程序层断下函数sock_sendmsg,并查看栈回溯,如图2.1所示。图2.1 查看栈回溯有信息发送时的栈回溯 无信息发送时的栈回溯lk...

2021-07-21 15:43:20 510 1

原创 Nano Code中DCI路径的设置方法

1. 未安装Intel System Studio所需文件可以在下方的百度网盘链接中下载:百度网盘链接:链接: https://pan.baidu.com/s/1UdOn7eIG5W-3mN9PphpnWg 提取码: 6hhe 复制这段内容后打开百度网盘手机App,操作更方便哦1.安装DCI设备的USB驱动dcidrv.msi。2.把openipc.zip复制到NanoCode所在文件夹下,并解压openipc.zip,如图1.1所示。图1.1 openipc.zip与openi

2021-07-14 11:30:45 535

原创 使用GDK7调试Linux内核之观察i915

1. i915与DRM的介绍1.1 i915i915可以分成两类;一类是内核态空间下的i915,另一类是用户态空间下的i915。内核态空间下的i915是英特尔显卡的内核驱动程序。用户态空间下的i915是基于英特尔显卡的mesa实现的。 mesa是基于开源的OpenGL实现的。1.2 DRMDRM的全称是Direct Rendering Manager,它是Linux内核中的子系统;DRM用于将用户态空间下的进程与GPU进行连接。用户态空间下的进程通过DRM给出API与GPU进行通信,

2021-07-13 17:19:01 1935

原创 符号文件及内核源代码的加载

目录1. 符号文件的加载2. 内核源代码的加载3. 验证是否成功加载其他说明1. 符号文件的加载1. 在命令行内输入.sympath+ 符号文件所在文件夹路径。.sympath+ 符号文件所在文件夹路径 //将符号文件所在文件夹路径添加到符号搜索路径中。 .sympath 符号文件所在文件夹路径 //当此命令成功执行后符号搜索路径中仅含有新添加的符号文件所在文件夹路径。2.执行.sympath命令,如图1.1所示。图1.1 ...

2021-07-12 15:15:27 240

原创 中断Ubuntu系统的GDK7-100

目录1. 确认调试主机与GDK7-100成功连接2. 中断Ubuntu系统的GDK7-100其他说明1. 确认调试主机与GDK7-100成功连接1.保证调试主机及GDK7-100处于开机状态。2.通过专用调试电缆将调试主机与GDK7-100连接起来。调试主机端必须使用USB3.0接口与专用调试电缆连接,具体接口位置没有要求。 GDK7-100必须使用后面板上的蓝色USB3.0接口中与专用调试电缆连接,其余的USB3.0接口则不行。3....

2021-07-12 15:10:23 291

原创 Ubuntu系统的GDK7中符号文件的准备与确认

目录1. 符号文件的准备2. 符号文件的确认其他说明1. 符号文件的准备1.可参考文章http://advdbg.org/blogs/advdbg_system/articles/7147.aspx下载符号文件。内核符号文件默认的下载位置是/usr/lib/debug/boot/vmlinux-5.3.0-62-generic。 其他内核模块符号文件默认的下载位置是/usr/lib/debug/lib/modules/5.3.0-62-generic。2....

2021-07-12 14:53:11 383

原创 使用GDK7调试Linux内核之KVM

1. KVM的介绍1.1 KVM架构的介绍1.目前有3种较为主流的虚拟化技术架构:ESXi架构、Xen架构及KVM架构,主要区别在虚拟化CPU、内存、磁盘及网络通信组件的模块不同及管理调度组件实现方式的不同;流虚拟化技术架构如图1.1所示。图1.1 主流虚拟化技术架构 ESxi架构:CPU、内存、磁盘及网络通信组件的虚拟化都在ESXi内核中实现;由于CPU、内存、磁盘及网络通信组件的虚拟化都在同一内核中实现,故不需要管理调度组件。 Xen架构:CPU及内...

2021-07-09 19:34:50 471

原创 入坑张银奎老师研发的GDK7

目录1. GDK7和Nano Code的简单介绍1.1 GDK7的简单介绍1.2 Nano Code的简单介绍2. GDK7调试原理的简单说明3. 配置前的准备工作3.1准备设备3.2 准备GDK73.3 准备调试主机4. 配置过程4.1 配置GDK7的过程4.2 配置调试主机的过程4.3确认调试主机与GDK7成功连接5. 中断GDK7(调试主机端操作)5.1中断Ubuntu系统的GDK75.2 中断Windows系统的GDK7参考文献..

2021-07-01 16:14:03 3109

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除