- 博客(476)
- 收藏
- 关注

原创 从Intel开发手册看x86指令格式(含手动将指令转化为机器码的方法)
本文介绍了x86汇编指令翻译为机器码的方法,重点讲解了操作码、ModR/M字段、SIB字段的查找和使用。通过7个具体例题,详细演示了mov和add等指令的机器码转换过程,包括寄存器编号查找、寻址方式确定、偏移量和立即数处理等关键步骤。文章还提供了Intel开发手册和在线反汇编工具作为参考,帮助读者理解x86指令编码格式,并验证翻译结果的正确性。
2025-03-24 09:50:52
899

原创 【x86汇编】C语言的switch&case结构的反汇编分析
push ebppush ebxpush esipush edipush ebp指令未执行时,打开寄存器窗口发现ESP=0x0012FFC18,为画栈区图做准备EBP的值入栈后,再次查看寄存器窗口发现有两个寄存器的值发生变动:EIP和ESPEIP寄存器(Extend Instruction Pointer 扩展指令指针寄存器,其存储指令的地址。
2024-10-29 19:57:40
1660
原创 CD66.【C++ Dev】模拟实现二叉搜索树的递归版本
介绍二叉搜索树(BST)的递归实现方法,包括查找、插入、删除等核心操作。重点讲解了递归实现时如何通过指针引用简化操作,避免显式查找父节点。详细分析了递归删除时的三种情况处理,并指出常见错误。此外还涉及析构函数、拷贝构造函数、赋值运算符重载的实现技巧,以及二叉搜索树在key搜索模型和key-value匹配模型中的应用。文章通过测试代码验证各功能的正确性,为理解和实现递归版二叉搜索树提供了完整指导。
2025-08-14 09:09:05
487
原创 使用内联汇编获取在线OJ平台CPU的信息
介绍获取CPU信息的汇编实现方法,包括使用cpuid指令获取厂商名、品牌名和虚拟机信息。通过不同功能号(0/0x80000002-04/0x40000000)将数据存入寄存器并拼接成字符串输出。代码示例展示了在LeetCode和LintCode题目中嵌入该功能,通过内联汇编实现CPU信息打印,同时保持ABI调用约定。最后在牛客平台测试输出结果,演示了汇编与C程序的混合编程应用。
2025-08-13 18:09:33
207
原创 CD66.【C++ Dev】模拟实现二叉搜索树的非递归版本
介绍二叉搜索树\的基本操作实现,重点关注查找和删除节点的算法。主要内容包括:1. 查找节点:通过比较节点值沿树遍历;2. 删除节点的三种情况处理:无子树、单子树和双子树;3. 双子树删除时使用左子树最大值替换法;4. 处理各种特殊情况的实现细节;5. 提供了LintCode上的删除节点编程题解。文章通过代码示例和图示详细讲解了BST操作的实现逻辑,特别是删除节点时的边界条件处理,并给出了完整的测试验证过程。
2025-08-12 08:48:36
769
原创 CD65.【C++ Dev】多态(4): 抽象类和多态面试题
讲解C++抽象类和虚函数相关概念。首先介绍抽象类的定义,即包含纯虚函数的类,通过=0语法强制子类重写函数。然后分析抽象类的性质:不能实例化,子类必须重写纯虚函数才能实例化。对比纯虚函数与override关键字的强制重写机制。最后解答了9个常见面试题,涵盖多态实现、虚函数特性(内联/静态/构造/析构)、访问效率、虚函数表存储位置、菱形继承问题等关键技术点,其中特别强调了虚析构函数的必要性以避免内存泄漏。
2025-08-11 08:36:08
832
原创 CD64.【C++ Dev】多态(3): 反汇编剖析单继承下的虚函数表
VS调试分析C++虚函数表的实现机制。主要内容包括:1)配置VS项目关闭安全检查和调试优化;2)在Debug+x86模式下编译包含虚函数的继承示例代码;3)通过反汇编详细分析构造函数初始化虚表指针的过程、多态调用的底层实现(通过ecx传递this指针,edx存储虚表指针)以及析构函数的调用顺序;4)总结关键点:编译期间确定虚表地址、构造/析构函数的调用顺序、多态调用的寄存器使用约定。文章结合汇编指令和内存变化,深入解析了C++虚函数机制的底层实现原理。
2025-08-10 08:46:48
615
原创 CD63.【C++ Dev】多态(2): 剖析虚函数表的前置知识
探讨C++虚函数表的实现机制,分析了子类虚表在父类虚表基础上的生成过程,验证了子类赋值给父类对象时虚表不会拷贝的特性。通过VS2022、DevC++和Linux环境的对比实验,展示了不同编译器下虚表格式的差异。文章详细介绍了三种定位虚表存储位置的方法(IDA分析、进程映射检查和地址比较),证明虚表通常存储在只读数据段。最后通过手动操作虚函数表调用虚函数的练习,演示了突破语法限制直接调用虚函数的技术。
2025-08-09 10:11:59
977
原创 CD62.【C++ Dev】继承和多态的练习题
回顾C++中函数重载、隐藏和重写的区别;然后介绍两种设计不可继承类的方法:C++98通过私有构造函数(需借助静态成员函数创建对象)和C++11的final关键字(可直接禁止继承);接着分析包含虚函数的类实例大小计算(考虑虚表指针和内存对齐);最后通过一个较难的多态调用案例,展示虚函数重写时参数默认值的继承规则(使用父类定义而非子类),并验证通过父类指针调用子类重写函数时的多态行为。全文涵盖继承、多态、内存布局等C++核心概念。
2025-08-08 08:11:37
677
原创 CD61.【C++ Dev】多态(1)
本文深入探讨C++多态的实现原理与应用。主要内容包括:1.通过virtual关键字实现虚函数重写,满足函数名、返回值、参数列表相同的"三同"条件;2.多态调用的核心条件:必须通过基类指针/引用调用虚函数;3.特殊重写场景:协变(返回值可为父子类指针/引用)和析构函数重写(编译器统一处理为destructor);4.new/delete时的多态行为,强调虚析构函数防止内存泄漏的重要性;5.C++11的override和final关键字用法。通过会员购票等实例,解析了多态与普通调用的本质区别
2025-08-07 08:47:08
606
原创 CD60.【C++ Dev】继承(4) 继承和组合
本文主要探讨了C++中继承与组合的区别及应用场景。首先通过两道继承练习题,分析了多继承下的内存布局和菱形虚拟继承的构造函数调用顺序。接着对比了继承(is-a)和组合(has-a)两种代码复用方式,指出继承是白箱复用,会破坏封装性且耦合度高;组合是黑箱复用,通过对象接口实现低耦合。最后建议在开发中优先使用组合以降低耦合度,但在必须使用多态等场景下仍需使用继承。文章还提供了相关论文和博客作为拓展资料,帮助读者深入理解面向对象设计中代码复用的最佳实践。
2025-08-06 15:02:12
1008
原创 OS22.【Linux】初识进程地址空间
深入探讨了进程地址空间的概念及其在操作系统中的重要作用。首先回顾了C/C++内存区域划分,通过实验验证了栈区向下增长、堆区向上增长的特性。重点阐述了进程地址空间的本质是内核数据结构,包含页表、CR3寄存器等关键组件,以及写时拷贝机制的工作原理。通过分析mm_struct结构体,详细说明了操作系统如何管理进程地址空间。文章还解释了进程地址空间存在的意义:保护物理内存、实现进程隔离,并指出进程地址空间不等于实际内存。最后介绍了操作系统的懒加载机制和缺页中断原理,更新了进程的组成公式为"内核数据
2025-08-05 10:09:32
938
原创 OS21.【Linux】环境变量
探讨Linux环境变量的概念与应用。通过实验对比系统命令与自制程序的执行差异,解释了PATH环境变量的作用机制。文章详细介绍了环境变量的全局属性、获取方法(包括env命令、getenv()函数、envp参数和environ变量),并区分了环境变量与本地变量的不同特性。此外,还分析了系统命令的分类(常规命令与内建命令),以及man和help命令的区别。最后简要提及了自定义程序入口函数的实现方法。全文通过代码示例和命令行操作,系统性地阐述了环境变量在Linux系统中的重要地位和工作原理。
2025-08-03 17:00:02
950
原创 CD59.【C++ Dev】继承(3) 菱形继承、菱形虚拟继承和虚基表的反汇编分析
探讨了C++中的继承方式,重点分析了菱形继承带来的数据冗余和二义性问题。通过代码示例展示了普通多继承的缺陷,并介绍了虚拟继承的解决方案。详细解析了虚基表(vbtable)的工作原理,包括偏移量存储方式和内存布局。通过反汇编代码分析,验证了虚继承如何通过偏移量访问公共基类成员,既解决了二义性问题又避免了数据冗余。最后比较了虚拟继承与传统继承在内存占用和访问效率上的差异,指出虚继承通过存储偏移量的方式实现了更高效的继承结构。
2025-08-02 10:01:14
779
原创 CD58.【C++ Dev】继承(2)
讨论了C++继承中的几个关键问题:1. 作用域问题:子类和父类可以定义同名成员(变量和函数),子类成员会隐藏父类同名成员,但可通过类域访问父类成员;2. 子类默认成员函数的实现规则:构造函数必须调用父类构造函数,拷贝构造和运算符重载需显式调用父类对应函数,析构函数会自动调用父类析构且遵循"先子后父"的顺序;3. 友元和静态成员特性:友元关系不继承,静态成员在继承体系中保持唯一实例。这些知识点对理解C++继承机制至关重要。
2025-07-31 09:20:25
748
原创 Chip-8模拟器开源项目的使用和技术文档解读
CHIP-8开源项目运行:介绍了在Linux环境下编译运行CHIP-8模拟器的具体步骤; 技术文档解读:详细解析了CHIP-8的硬件架构,包括内存分布、寄存器、键盘、显示、精灵、定时器等组件,并完整说明了36条指令集; 参考资料:提供了多个CHIP-8开发相关的技术文档和网站资源。文章通过清晰的架构图和代码示例,为开发者提供了CHIP-8模拟器开发的完整指南。
2025-07-30 08:53:33
1026
原创 CD57.【C++ Dev】继承(1)
介绍了C++继承的基本概念与应用,通过学工管理系统的例子展示如何提取公共属性(如姓名、年龄)到父类person,学生和教职工类通过public继承复用这些属性。重点讲解了继承的三种方式(public/protected/private)及其访问权限规则,强调实际开发中常用public继承。此外,解释了父类与子类对象的赋值转换(切片机制),指出父类指针/引用可指向子类对象中继承的部分,并对比了直接赋值与引用的区别。最后通过代码示例验证了继承后成员变量的访问与修改逻辑。
2025-07-29 09:31:20
559
原创 OSE1.【Linux】练习题组1
整理了7个Linux系统相关的知识点练习题,涵盖文件系统、命令使用、文件操作和开发工具等方面。主要内容包括:1)Linux 2.6.*内核默认支持ext2/ext3/ext4/xfs文件系统;2)uname -r命令查看内核版本;3)top命令查看CPU占用;4)批量删除.c文件的两种方法;5)yum命令的正确用法;6)Vim中全局替换字符串的语法;7)Makefile的工作原理和伪目标特性。这些题目涉及Linux系统管理的基础知识,通过解析帮助理解常用命令和工具的核心功能。
2025-07-28 12:09:19
782
原创 CD56.【C++ Dev】模版的分离编译
【模板类声明与定义分离问题总结】 当模板类的声明与定义分离时,会导致链接错误。原因在于模板需要实例化才能生成具体代码,而分离编译时编译器无法看到完整的模板定义。解决方法有两种: 显式实例化:在定义文件中针对特定类型进行实例化,但会引入冗余代码; 合并声明和定义:将实现代码直接放在头文件(.h或.hpp)中,这是STL采用的标准做法。对于非模板类,声明和定义分离则不会产生此问题。
2025-07-27 09:26:51
615
原创 OS21.【Linux】进程状态(2) O(1)调度算法、进程切换和其他概念
介绍了Linux进程调度的核心机制。首先回顾了O(1)调度算法,详细解析了运行队列和过期队列的双指针数组结构,以及通过位图快速定位最高优先级进程的方法。其次阐述了进程的竞争性、独立性、并行和并发概念。重点讲解了进程切换的完整过程,包括上下文保存机制,特别说明了32位系统下TSS(任务状态段)在保存寄存器值方面的关键作用。文章还补充了进程上下文保存位置的讨论,指出除了PCB外,任务状态段TSS也是重要存储位置。最后提供了关于进程上下文和操作系统进程管理的拓展阅读资源。
2025-07-26 09:23:48
802
原创 OS20.【Linux】进程状态(2) 僵尸进程、孤儿进程和进程优先级
首先回顾了Linux进程的基本概念,然后重点讨论了两种特殊进程状态:僵尸进程和孤儿进程。僵尸进程是已终止但未被父进程完全回收的进程,可能导致内存泄漏;孤儿进程则是父进程终止后由init进程接管。文章还详细介绍了进程优先级的概念,包括PRI和NI值的含义及修改方法(通过nice、renice和top命令)。最后简要说明了如何在图形界面调整进程优先级。全文提供了代码示例和命令行操作演示,帮助理解进程状态管理和优先级调整的实际应用。
2025-07-25 09:23:44
1173
原创 CD55.【C++ Dev】非类型的模版参数以及模版的特化
本文介绍了C++模板中的非类型模板参数和模板特化。非类型模板参数在模板中视为常量,C++20前只能使用整型参数。模板特化分为全特化和偏特化:类模板支持两种特化方式,而函数模板仅支持全特化。文章通过Less函数模板和日期类示例,展示了如何通过特化处理指针类型比较。最后通过优先级队列案例,演示了如何为Date*类型特化Less函数模板,实现对日期指针的正确排序。
2025-07-23 09:21:42
889
原创 OS19.【Linux】进程状态(1)
介绍了操作系统中的进程状态分类,包括运行状态、阻塞状态、挂起状态和就绪状态,并对比了不同操作系统教材中的定义差异。重点分析了Linux内核中的进程状态实现(R/S/D/T/t/X等),通过实验演示了进程在不同状态下的表现。特别解释了D状态(不可中断睡眠)的特性及其与S状态的区别,并提供了模拟高IO场景的代码示例。文章还涉及进程调度算法、前台/后台进程、虚拟内存管理等核心概念,最后介绍了交换分区及其查看方法。这些内容为理解操作系统进程管理机制提供了全面指导。
2025-07-21 08:26:12
1531
原创 OS18.【Linux】进程基础知识(2)
Linux进程基础知识,重点分析了进程创建机制。文章首先介绍了psajx命令获取PID的原理,通过系统调用遍历PCB链表获取进程信息。随后详细讲解了fork()系统调用,包括其返回值设计原理(父进程获子进程PID,子进程获0)、父子进程分流机制,并通过实验代码验证了父子进程的执行流程。文章还对比了fork()和vfork()的差异,指出vfork()会阻塞父进程且共享父进程存储空间。最后总结了两种创建进程的方法:通过bash执行可执行文件和使用fork()/vfork()系统调用。全文深入浅出
2025-07-19 11:47:49
1119
原创 OS17.【Linux】进程基础知识(1)
介绍Linux进程的基本概念和管理方法。主要内容包括:1.进程的浅层定义 - 正在运行的程序;2.查看进程的多种方法(ps、top、/proc目录);3.进程管理实践(查看、终止进程);4.进程控制块(PCB)的组成和作用;5.Linux内核中task_struct结构体的详细解析。文章通过代码示例和命令演示,帮助读者理解进程标识符(PID)、工作目录、程序计数器等核心概念,并深入分析了操作系统如何通过PCB组织和管理进程。最后提供了Linux内核源代码中task_struct的完整定义,为后续学
2025-07-18 11:25:02
620
原创 CD54.【C++ Dev】vector和list的反向迭代器的实现
C++反向迭代器的实现原理与应用。首先分析了反向迭代器的功能,通过比较两种实现方法:独立编写反向迭代器类(存在代码冗余)和封装正向迭代器(STL采用的方式),重点讲解了后者。文章详细解析了operator返回--tmp的原因,指出这是一种错位访问策略。然后给出了统一的反向迭代器模板实现,并演示了如何将其应用于自定义vector和list容器。最后通过洛谷B2089数组逆序重存放题目,验证了反向迭代器的实际应用效果,测试代码均通过了在线评测系统。全文通过具体代码示例展示了反向迭代器的对称性特点和实现
2025-07-17 08:23:22
621
原创 CD53.【C++ Dev】模拟实现优先级队列(含仿函数)
优先级队列的模拟实现,重点关注了仿函数和容器适配器的应用。主要内容包括:1. 仿函数的特点(类似函数调用、可保存状态);2. 基于STL框架的优先级队列实现,使用vector作为默认容器和less作为默认比较方式;3. 关键功能实现:构造函数、向下调整、向上调整、push/pop等操作;4. 通过日期类等示例展示自定义类型的堆操作;5. 在LeetCode题目中的应用验证。实现过程中充分考虑了模板化和仿函数的灵活性,使优先级队列能够适应不同类型和比较需求。
2025-07-16 19:02:52
603
原创 CD51.【C++ Dev】优先级队列priority_queue(含数组中的第K个最大元素)
总结了四种解决数组中第K个最大元素问题的方法:1)直接排序后取第K个元素;2)建立大顶堆并删除前K-1个元素;3)建立小顶堆并维护前K大元素;4)根据K值大小灵活选择堆类型。其中方法1时间复杂度为O(nlogn),方法2-4均为O(n)。重点分析了堆方法的使用技巧,包括priority_queue的初始化方式、大小堆选择策略,以及时间复杂度计算。文章还强调了STL中priority_queue的注意事项,如缺少迭代器、默认大顶堆等特性。
2025-07-14 19:27:25
690
原创 CD49.【C++ Dev】容器适配器模式(含typename的用法)
介绍容器适配器模式及其在STL栈和队列中的应用。主要内容包括:1)容器适配器概念,通过复用其他容器实现功能转换;2)用同一模板类实现数组栈(基于vector)和链式栈(基于list);3)两种方法用vector实现队列,方法1强制适配但效率低,方法2使用deque适配更高效;4)讨论了带容器适配器的迭代器写法,需使用typename声明依赖类型。文章通过LeetCode题目验证了实现方案,对比了不同容器的性能差异。
2025-07-13 20:13:18
868
原创 CD48.【C++ Dev】栈和队列练习题(栈的压入弹出序列、二叉树的层序遍历(正序和逆序))
讨论如何判断给定弹出序列是否为某栈压入序列的可能弹出顺序。通过模拟栈操作,使用双指针分别遍历压入序列和弹出序列。当栈顶元素匹配弹出序列时出栈,否则继续压入元素。若最终两个序列都遍历完且栈为空,则返回true;若压入序列已遍历完但栈顶元素不匹配当前弹出元素,则返回false。时间复杂度O(n),空间复杂度O(n)。示例验证了[1,2,3,4,5]与[4,5,3,2,1]匹配,而[4,3,5,1,2]不匹配的情况。
2025-07-12 21:48:08
872
原创 OS16.【Linux】冯依诺曼体系结构和操作系统的浅层理解
冯依诺曼体系结构是现代计算机的基础架构,其核心是将程序指令和数据存储在同一个存储器中。该体系由CPU、存储器、输入/输出设备通过总线连接组成。程序运行必须加载到内存,CPU通过控制器和运算器处理数据。操作系统通过驱动程序间接管理硬件资源,本质是对数据进行组织管理。系统调用是程序访问操作系统服务的接口,程序在执行时会在用户态和内核态之间切换以确保安全。库函数是对系统调用的封装,为开发者提供更便捷的编程接口。整个计算机系统的运行都建立在冯依诺曼体系结构的基础上。
2025-07-11 18:57:25
819
原创 L61.【LeetCode题解】最小栈
介绍两种实现最小栈的方法。第一种方法使用双栈结构,主栈存储元素,辅助栈记录最小元素顺序,通过比较更新辅助栈来保证常数时间获取最小值。第二种方法采用差值栈技术,仅用一个栈存储元素与当前最小值的差值,通过差值运算来维护最小值,解决了栈顶是最小值时的更新问题,并注意处理数值溢出情况。两种方法都能在O(1)时间复杂度内完成所有操作,其中差值栈方法空间效率更优。
2025-07-10 21:59:38
758
原创 CD47.【C++ Dev】list的模拟实现(2)
介绍C++中list容器的模拟实现,主要包含以下内容: 迭代器实现 通过模板参数区分const和非const迭代器 实现++/--/*/->等运算符重载 采用哨兵节点简化边界处理 核心功能实现 插入/删除操作(insert/erase) 头尾操作(push/pop_front/back) 容量操作(size/clear) 特殊成员函数 拷贝构造/赋值运算符的现代写法 析构函数的内存管理 实际应用 在LeetCode链表题中测试实现 验证各成员函数的正确性 实现中注意了深拷贝、迭代器失效等常见
2025-07-09 14:36:08
998
原创 CD46.【C++ Dev】list的模拟实现(1)
介绍C++ STL库中list容器的模拟实现部分过程。首先分析了STL库中list的双向链表结构,包括节点结构体和空链表构造函数的实现。接着展示了自定义list类的框架搭建,重点讲解了哨兵位节点的构造和尾插操作的实现。文章着重探讨了list迭代器的设计,解释了迭代器作为封装类的必要性,详细说明了迭代器的构造函数、++/--运算符重载、解引用操作符以及比较运算符的实现方法。最后讨论了const迭代器的设计考量,指出需要区分迭代器本身的可修改性和迭代内容的可修改性。
2025-07-08 11:14:30
1112
原创 126.【C语言】数据结构之归并排序非递归解法
介绍归并排序的非递归实现方法。首先回顾了递归解法,然后重点讲解了循环实现非递归归并排序的两种方案。针对数组元素个数为2的次方倍的情况,详细分析了gap控制分组归并的机制,给出了完整的代码框架。对于元素个数非2次方倍的情况,提出了两种处理边界越界的方法:一是归并完成后统一拷贝,二是边归并边拷贝。通过调试信息展示了分组归并的过程,并通过LeetCode测试验证了算法的正确性。最终推荐使用边归并边拷贝的方法,因其处理边界条件更简单高效。
2025-07-07 11:03:57
587
原创 125.【C语言】数据结构之归并排序递归解法
绍了归并排序递归算法的实现过程。首先通过重新排列数组的题目引出分治思想,然后详细讲解了归并排序的分治策略:将数组不断二分直到单个元素视为有序,再通过合并有序子序列完成排序。文章提供了完整的递归实现代码,包括临时数组的使用、区间划分和归并操作,并分析了时间复杂度为O(NlogN)。最后指出该算法对奇数个元素同样适用,并通过LeetCode测试验证了正确性,为后续讲解非递归实现做铺垫。
2025-07-06 19:19:28
1355
原创 130.【C语言】数据结构之基数排序(了解即可,实际应用较少)
基数排序是一种非比较类排序算法,通过分配和回收的方式对数字的每一位进行排序。首先解释了基数排序的基本原理,包括最低位优先法和最高位优先法,并通过一个具体的例子展示了基数排序的过程。接着分析了基数排序的时间复杂度,并给出了C++实现代码。最后提出了一个思考题:如何对包含负数的数组进行基数排序,并给出了相应的解决方案
2025-07-05 20:59:20
696
原创 CC56.【C++ Cont】分治算法:快排的简要复习(含手撕快排题)
分治算法基本思想及其在快速排序中的应用。重点复习了优化后的Hoare快速排序算法,包含随机选key和三路划分的实现方法。通过"颜色分类"和"排序数组"两个例题,展示了如何运用三路划分思想进行数组排序。代码实现采用递归方式,对小于和大于key的区间分别递归处理,最终完成整个数组的升序排列。该算法时间复杂度为O(nlogn),空间复杂度较优,适用于大规模数据排序。
2025-07-04 20:46:22
1051
原创 L58.【LeetCode题解】模拟算法习题集1(Z 字形变换、外观数列)
Z字形变换采用两种解法:方法1通过二维数组模拟Z字形填充过程,分竖填和斜填两步完成;方法2优化为找规律解法,通过分析行间字符间隔规律直接计算位置。两种方法均需特殊处理numRows=1的情况,时间复杂度均为O(n)。 外观数列问题提供三种解法:方法1通过迭代生成数列;改进版仅保留当前结果节省空间;双指针法优化计数过程。另有打表法利用n≤30的特性,预生成结果直接查询。核心都是对前一项进行行程长度编码,典型解法时间复杂度为O(n*m),其中m为字符串平均长度。
2025-07-04 15:03:44
640
原创 OS15.【Linux】gdb调试器的简单使用
介绍了Linux下GDB调试器的使用方法。主要内容包括:调试前的准备工作,需使用-g选项编译生成debug版本;断点的分类与原理,分为软件断点和硬件断点;通过示例代码演示了常用调试命令的使用,如list查看代码、break设置断点、run运行程序、info查看信息、next/step单步调试、print查看变量等。文章还对比了GDB命令与Visual Studio调试功能的对应关系,并介绍了finish、continue、setvar等进阶命令的使用方法。
2025-07-03 20:22:08
677
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人