Linux入门DAY17(位运算与LinuxGDB调试)

发布时间:2026/8/11 10:22:21
Linux入门DAY17(位运算与LinuxGDB调试) #位运算# #Linux调试# #GDB#前言本篇笔记梳理C语言底层核心位运算全部考点同时配套Linux开发必备的GDB调试工具完整操作指南。位运算常用于嵌入式底层寄存器操作、数据加密、数值交换GDB是定位段错误、逻辑bug的核心工具期末笔试、嵌入式面试均高频考察内容精简贴合考试与实操需求。一、位运算符基础1. 六大位运算规则运算符 名称 运算规则 按位与 全1出1有0出0| 按位或^ 按位异或 二进制位相同为0相异为1~ 按位取反 1变00变1唯一单目位运算符 左移 整体左移n位低位补0等价乘以 右移 无符号数高位补0有符号数高位补符号位等价除以2. 位运算优先级从高到低~ 、 ^ |注意位运算优先级低于加减乘除复杂表达式建议手动加括号避免逻辑错误。二、位运算经典实操代码考试必考1. 数字指定二进制位置置1// 将num的第n位设置为1其余位保持不变num num | (1 n);原理 1 n 构造掩码仅第n位为1或运算强制置1。2. 数字指定二进制位清0// 将num的第n位设置为0其余位保持不变num num ~(1 n);原理 ~(1 n) 构造掩码仅第n位为0与运算强制清0。3. 不借助中间变量交换两个整数方案1异或法推荐无溢出a a ^ b;b a ^ b;a a ^ b;方案2加减法存在大数溢出缺陷a a b;b a - b;a a - b;三、程序调试两种方案1. printf打印调试简易入门在代码关键流程插入 printf() 打印变量、执行标记通过输出内容判断程序运行逻辑。优点无需额外工具上手零成本缺点复杂程序需要频繁增删打印语句调试效率低。2. GDB调试工具Linux嵌入式必备GDB是GNU官方开源代码调试工具专门用于定位逻辑错误、段错误。1编译带调试信息程序编译时追加 -g 参数向可执行文件写入源码调试信息gcc main.c -g2启动GDBgdb ./a.out3核心常用指令汇总指令 全称 功能l list 查看程序源代码b 行号 break 在指定代码行设置断点r run 从头运行程序遇到断点暂停n next 单步执行下一行不进入函数内部s step 单步执行跟进函数内部代码p 变量名 print 实时查看当前变量存储的值where - 定位段错误崩溃的代码位置q quit 退出GDB调试终端4两大适用场景1. 排查逻辑错误单步跟踪变量变化定位判断、循环逻辑漏洞2. 排查段错误空指针、数组越界、非法内存访问使用 where 一键定位崩溃行。小结1. 位运算核心移位实现乘除2、与或异或实现二进制位修改异或交换数字是笔试高频编程题2. 移位区分有符号/无符号数据负数右移高位补符号位左移低位统一补03. 调试分两种方式简单程序用printf打印Linux嵌入式开发必须掌握GDB4. GDB使用前提编译添加 -g 参数核心指令记住断点、单步、打印变量、定位崩溃四大功能。