debug-vscode调试方法
debug - vscode gdb调试指南
文章目录
- debug - vscode gdb调试指南
- 前言
- 一、调试代码
- 二、命令
- 查看main反汇编
- 查看寄存器
- 打印某个变量
- 打印寄存器,如pc
- 打印当前函数栈信息(当前执行位置)
- 打印程序栈局部变量
- x命令的语法如下所示:
- 打印某变量地址
前言
参考:VSCode C/C++(gdb)调试指南
命令参考:
https://www.cnblogs.com/chengliangsheng/p/3597010.html
一、调试代码
#include <stdio.h>#include <malloc.h>int g_i = 100;int g_j = 200;int g_k, g_h;int main(int argc, char *argv[])
{const int MAXN = 100;int *p = (int*)malloc(MAXN * sizeof(int)); static int s_i = 5;static int s_j = 10;static int s_k;static int s_h;int i = 5;int j = 10;int k = 20;int f, h;char *pstr1 = "magictong Hello World";char *pstr2 = "magictong Hello World";char *pstr3 = "Hello World";printf("堆中数据地址:x%08x\n", p);putchar('\n');printf("i 栈中数据地址(有初值):x%08x = %d\n", &i, i);printf("j 栈中数据地址(有初值):x%08x = %d\n", &j, j);printf("k 栈中数据地址(有初值):x%08x = %d\n", &k, k);printf("f 栈中数据地址(无初值):x%08x = %d\n", &f, f);printf("h 栈中数据地址(无初值):x%08x = %d\n", &h, h);putchar('\n');printf("s_i 静态数据地址(有初值):x%08x = %d\n", &s_i, s_i);printf("s_j 静态数据地址(有初值):x%08x = %d\n", &s_j, s_j);printf("s_k 静态数据地址(无初值):x%08x = %d\n", &s_k, s_k);printf("s_h 静态数据地址(无初值):x%08x = %d\n", &s_h, s_h);putchar('\n');printf("g_i 全局数据地址(有初值):x%08x = %d\n", &g_i, g_i);printf("g_j 全局数据地址(有初值):x%08x = %d\n", &g_j, g_j);printf("g_k 全局数据地址(无初值):x%08x = %d\n", &g_k, g_k);printf("g_h 全局数据地址(无初值):x%08x = %d\n", &g_h, g_h);putchar('\n'); printf("pstr1 字符串常量数据地址:x%08x 指向0x%08x 内容为-%s\n", &pstr1, pstr1, pstr1);printf("pstr2 字符串常量数据地址:x%08x 指向0x%08x 内容为-%s\n", &pstr2, pstr2, pstr2);printf("pstr3 字符串常量数据地址:x%08x 指向0x%08x 内容为-%s\n", &pstr3, pstr3, pstr3);free(p);return 0;}
二、命令
查看main反汇编
-exec disassemble /m main

查看寄存器
-exec info r

打印某个变量
-exec print s 或者 --s

打印寄存器,如pc
-exec print $pc

打印当前函数栈信息(当前执行位置)
-exec bt 或 -exec info f

打印程序栈局部变量
-exec info local

x命令的语法如下所示:
x/ n、f、u是可选的参数。
n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。
f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。
u 表示从当前地址往后请求的字节数,如果不指定的话,GDB默认是4个bytes。
u参数可以用下面的字符来代替,b表示单字节,h表示双字节,w表示四字节,g表示八字节。
当我们指定了字节长度后,GDB会从指内存定的内存地址开始,读写指定字节,并把其当作一个值取出来。
表示一个内存地址。n/f/u三个参数可以一起使用。例如:
命令:x/3uh 0x54320表示,从内存地址0x54320读取内容,h表示以双字节为一个单位,3表示三个单位,u表示按十六进制显示。

16进制格式化打印16个单位的
-exec x/16x 0x5ffe60
打印某变量地址
-exec p &buff

相关文章:
debug-vscode调试方法
debug - vscode gdb调试指南 文章目录 debug - vscode gdb调试指南前言一、调试代码二、命令查看main反汇编查看寄存器打印某个变量打印寄存器,如pc打印当前函数栈信息(当前执行位置)打印程序栈局部变量x命令的语法如下所示:打印某…...
Cypher进阶(函数、索引)
文章目录 Cypher进阶Aggregationcount()函数统计函数collect()函数 unwindforeachmergeunionload csvcall 函数断言函数all()any()~~exists()~~is not nullnone()single() 标量函数coalesce()startNode()/endNode()id()length()size() 列表函数nodes()keys()range()reduce() 数…...
XML Schema 数值数据类型
XML Schema 数值数据类型 引言 XML Schema 是一种用于描述 XML 文档结构的语言。它定义了 XML 文档中数据的有效性和结构。在 XML Schema 中,数值数据类型是非常重要的一部分,它定义了 XML 文档中可以包含的数值类型。本文将详细介绍 XML Schema 中常用的数值数据类型,以及…...
Window获取界面空闲时间
GetLastInputInfo是一种Windows API函数,用于获取上次输入操作的时间。 该函数通过LASTINPUTINFO结构返回最后一次输入事件的时间。 原型如下 BOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);那么可以利用GetLastInputInfo来得到界面没有操作的时长 uint…...
Java进阶(vue基础)
目录 1.vue简单入门 ?1.1.创建一个vue程序 1.2.使用Component模板(组件) 1.3.引入AXOIS ?1.4.vue的Methods(方法) 和?compoted(计算) 1.5.插槽slot 1.6.创建自定义事件? 2.Vue脚手架安装? 3.Element-UI的…...
Mac电脑上好用的压缩软件
在Mac电脑上,有许多优秀的压缩软件可供选择,这些软件不仅支持多种压缩格式,还提供了便捷的操作体验和强大的功能。以下是几款被广泛推荐的压缩软件: BetterZip 功能特点:BetterZip 是一款功能强大的压缩和解压缩工具&a…...
Ubuntn24.04安装
1.镜像下载 https://cn.ubuntu.com/download Ubuntu 24.04.1 (Noble Numbat) 进入下载即可 2.安装系统 打开虚拟机 选择语言 输入用户名和密码 安装ssh 安装完成重启即可。 3.可能出现的问题 关于Ubuntu系统虚拟机出现频繁闪屏,移动和屏幕适应大小问题_vmware安…...
基于ansible部署elk集群
ansible部署 ELK部署 ELK常见架构 (1)ElasticsearchLogstashKibana:这种架构是最常见的一种,也是最简单的一种架构,这种架构通过Logstash收集日志,运用Elasticsearch分析日志,最后通过Kibana中…...
解锁.NET Fiddle:在线编程的神奇之旅
在.NET 开发的广袤领域中,快速验证想法、测试代码片段以及便捷地分享代码是开发者们日常工作中不可或缺的环节。而.NET Fiddle 作为一款卓越的在线神器,正逐渐成为众多.NET 开发者的得力助手。它打破了传统开发模式中对本地开发环境的依赖,让…...
记录pve中使用libvirt创建虚拟机
pve中创建虚拟机 首先在pve网页中创建一个linux虚拟机,我用的是debian系统,过程省略 注意虚拟机cpu类型要设置为host 检查是否支持虚拟化 ssh分别进入pve和debian虚拟机 检查cpu是否支持虚拟化 egrep --color vmx|svm /proc/cpuinfo # 结果高亮显示…...
【HTML性能优化】提升网站加载速度:GZIP、懒加载与资源合并
系列文章目录 01-从零开始学 HTML:构建网页的基本框架与技巧 02-HTML常见文本标签解析:从基础到进阶的全面指南 03-HTML从入门到精通:链接与图像标签全解析 04-HTML 列表标签全解析:无序与有序列表的深度应用 05-HTML表格标签全面…...
三维空间全局光照 | 及各种扫盲
Lecture 6 SH for diffuse transport Lecture 7关于 SH for glossy transport 三维空间全局光照 diffuse case和glossy case的区别 在Lambertian模型中,BRDF是一个常数 diffuse case 跟outgoing point无关 glossy case 跟outgoing point有关 (Gloss…...
数据库开发常识(10.6)——SQL性能判断标准及索引误区(1)
10.6. 数据库开发常识 作为一名专业数据库开发人员,不但需要掌握数据库开发相关的语法和功能实现,还要掌握专业数据库开发的常识。这样,才能在保量完成工作任务的同时,也保质的完成工作任务,避免了为应用的日后维护埋…...
网络爬虫js逆向之某音乐平台案例
【注意!!!】 前言: - 本章主要讲解某音乐平台的js逆向知识 - 使用关键字搜定位加密入口 - 通过多篇文章【文字案例】的形式系统化进行描述 - 本文章全文进行了脱敏处理 - 详细代码不进行展示,需要则私聊作者 爬虫js逆向…...
Spark--算子执行原理
一、sortByKey SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。 内部执行流程 1、创建RangePartitioner part&…...
事件驱动架构(EDA)
事件驱动架构(Event-Driven Architecture, EDA)是一种软件架构模式,其中系统的行为由事件的产生和处理驱动。在这种架构中,系统的组件通过事件进行交互,而不是通过直接的调用或者请求响应方式。 关键概念 事件&#x…...
C++ 入门速通-第5章【黑马】
内容来源于:黑马 集成开发环境:CLion 先前学习完了C第1章的内容: C 入门速通-第1章【黑马】-CSDN博客 C 入门速通-第2章【黑马】-CSDN博客 C 入门速通-第3章【黑马】-CSDN博客 C 入门速通-第4章【黑马】-CSDN博客 下面继续学习第5章&…...
2025春招,深度思考MyBatis面试题
大家好,我是V哥,2025年的春招马上就是到来,正在准备求职的朋友过完年,也该收收心,好好思考一下自己哪些技术点还需要补一补了,今天 V 哥要跟大家聊的是MyBatis框架的问题,站在一个高级程序员的角…...
排序算法--冒泡排序
冒泡排序虽然简单,但在实际应用中效率较低,适合小规模数据或教学演示。 // 冒泡排序函数 void bubbleSort(int arr[], int n) {for (int i 0; i < n - 1; i) { // 外层循环控制排序轮数for (int j 0; j < n - i - 1; j) { // 内层循环控制每轮比…...
简易C语言矩阵运算库
参考网址: 异想家纯C语言矩阵运算库 - Sandeepin - 博客园 这次比opencv快⑥倍!!! 参考上述网址,整理了一下代码: //main.c#include <stdio.h> #include <stdlib.h> #include <string.h…...
Wan2.2-I2V-A14B开源可部署:符合等保2.0要求,支持审计日志+访问控制
Wan2.2-I2V-A14B开源可部署:符合等保2.0要求,支持审计日志访问控制 1. 镜像概述与核心特性 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像,基于RTX 4090D 24GB显存显卡和CUDA 12.4环境深度定制。本镜像不仅提供高性能的视频生成…...
AnythingtoRealCharacters2511效果展示:动漫角色真人化案例
AnythingtoRealCharacters2511效果展示:动漫角色真人化案例 你有没有想过,如果自己喜欢的动漫角色真的出现在现实世界里,会是什么样子?不是那种粗糙的3D建模,也不是简单的滤镜叠加,而是看起来就像用专业相…...
MangoHud与Vulkan视频编码协议:AV1监控完全指南
MangoHud与Vulkan视频编码协议:AV1监控完全指南 【免费下载链接】MangoHud A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more. Discord: https://discordapp.com/invite/Gj5YmBb 项目地址: https://gitcode.com/gh_mirrors/…...
Pixel Fashion Atelier实战教程:从零构建像素时装生成API服务
Pixel Fashion Atelier实战教程:从零构建像素时装生成API服务 1. 项目介绍与核心价值 Pixel Fashion Atelier(像素时装锻造坊)是一款专为时尚设计师和像素艺术爱好者打造的AI图像生成工具。它基于Stable Diffusion和Anything-v5模型&#x…...
Vlc.DotNet:在.NET应用中构建专业级媒体播放能力
Vlc.DotNet:在.NET应用中构建专业级媒体播放能力 【免费下载链接】Vlc.DotNet .NET control that hosts the audio/video capabilities of the VLC libraries 项目地址: https://gitcode.com/gh_mirrors/vl/Vlc.DotNet 价值定位:解决.NET媒体播放…...
YOLOv11涨点改进| 全网独家创新、检测头Head改进篇| CVPR 2026顶会 |使用FAAHead改进YOLOv11的检测头,处理小目标、遮挡小目标检测、旋转目标检测有效涨点,助力高效发论文
一、本文介绍 🔥本文给大家介绍使用CVPR 2026顶会 FAAHead 和 OBB_FAAHead 改进 YOLOv11的检测头,可以有效缓解目标检测中分类分支与框回归分支之间的特征冲突问题,尤其适合旋转目标检测或含明显方向信息的目标检测任务。FAAHead 的核心思想是在检测头阶段先对 RoI 或候选…...
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护
OpenClaw安全加固:Qwen3.5-9B操作权限的4层防护 1. 为什么需要安全加固? 上周我在用OpenClaw自动处理一份包含客户联系方式的Excel表格时,突然意识到一个问题:如果AI助手误操作删除了关键文件怎么办?更可怕的是&…...
3分钟掌握图片比对:PicQuickCompare让你高效发现视觉差异
3分钟掌握图片比对:PicQuickCompare让你高效发现视觉差异 【免费下载链接】PicQuickCompare Compare two pictures quickly 项目地址: https://gitcode.com/gh_mirrors/pi/PicQuickCompare PicQuickCompare是一款专为快速图片比对而设计的轻量级工具…...
STP根桥选举避坑指南:华为交换机优先级设置的那些门道
STP根桥选举避坑指南:华为交换机优先级设置的那些门道 在网络工程师的日常工作中,生成树协议(STP)的配置看似简单,却暗藏玄机。特别是根桥选举这个基础环节,稍有不慎就会导致网络性能下降甚至环路问题。本文…...
人血小板裂解液(hPL)与细胞治疗生产工具解析:Sexton产品应用综述【曼博生物官方代理Sexton】
摘要:人血小板裂解液(hPL)作为无动物源培养补充剂,正在逐步替代FBS应用于细胞与基因治疗(CGT)领域。本文结合相关产品体系,对hPL及细胞冻存与灌装系统进行系统梳理。 关键词:人血小板…...
