首页
首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
计算机基础
coderhuo
创建于2025-05-10
订阅专栏
计算机基础知识
暂无订阅
共22篇文章
创建于2025-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
Linux capability多线程权限泄露示例
capabilities将系统root权限按功能单元划分,使用者按需打开/关闭相关权限,比基于UID的权限控制方式更精细。
fork导致的死锁问题
本文主要介绍fork导致的死锁问题及其解决方法。由于fork的写时复制机制,子进程完全继承父进程的内存空间,仅当父进程或者子进程改变对应内存空间的内容时,才把对对应的内存空间分离。
程序中的整数
本文主要介绍整数相关的三个问题:类型转换、符号位扩展、数据截断。 类型转换并不改变原数据的内存模型,只是改变了这块内存的解读方式。
虚拟内存探究,深入理解进程地址空间
想了解堆栈等虚拟内存相关知识吗? 想知道下面这张进程地址空间示意图是如何一步一步画出来的吗? 《虚拟内存探究》系列文章将通过实验的方式带你学习相关知识。
虚拟内存探究 -- 第五篇:The Stack, registers and assembly code
这是虚拟内存系列文章的第五篇,也是最后一篇,目标是以不同的方式在实践中学习一些计算机基础知识。本章我们将深入学习栈是如何工作的,以及局部变量是如何自动申请、释放的。
Cache一致性导致的踩内存问题
本文主要分享一个Cache一致性踩内存问题的定位过程,涉及到的知识点包括:backtrace、内存分析、efence、wrap系统函数、硬件watchpoint、DMA、Cache一致性等。
如何利用硬件watchpoint定位踩内存问题
本文介绍如何使用ARM平台的硬件watchpoint定位踩内存问题,特别是如何在运行过程中自动对特定内存区域添加watchpoint。
如何在实时操作系统(RTOS)中使用GCC的栈溢出保护(SSP)功能
本文介绍如何在实时操作系统(RTOS)中使用GCC的栈溢出保护(SSP)功能,是一篇翻译文章,中间插入了较多作者自己的理解。
Linux控制台重定向方法
本文介绍一种通过文件描述符重定向终端输入/输出的方法。 设备出厂部署后,不方便接调试串口,查看设备输出就变得比较困难,不利于问题定位。 如果设备具有联网能力,我们可以通过telnet或者ssh登录到设备上,进行远程调试。 如果设备有日志文件,可以直接读取日志文件。但是一般情况下…
跨平台printf封装方法
嵌入式开发中经常需要跨平台移植,但是不同平台的系统函数通常不一样,如果能封装一个平台适配层,将底层系统差异和上层业务代码隔离,移植起来将事半功倍。 平台适配层用来屏蔽各系统差异,自身编译成静态库,并对业务层提供统一的头文件。 业务层直接调用平台适配层封装好的接口,不关心底层实现…
arm平台根据栈帧进行backtrace的方法
本文主要介绍在arm平台回溯函数调用栈(backtrace)的方法。 嵌入式设备开发过程中,难免会遇到各种死机问题。这类问题的定位一直是开发人员的噩梦。 输出死机时的内存镜像(coredump),利用gdb还原“案发现场”。 三种定位手段中,第一种是最基本的,提供的信息也最少;…
虚拟内存探究 -- 第四篇:malloc, heap & the program break
这是虚拟内存系列文章的第四篇。 下面提到的都是基于本系统的,其他系统可能会有差异。 我们会查看部分Linux内核源码。如果你使用的是Ubuntu系统,可以通过下面的命令下载对应版本的内核源码: malloc是动态分配内存常用函数,它分配的内存在堆上。 提示:malloc不是系统…
虚拟内存探究 -- 第三篇:一步一步画虚拟内存图
这是虚拟内存系列文章的第三篇。 前面我们提到在进程的虚拟内存中可以找到哪些东西,以及在哪里去找。 首先我们想确认的是栈在虚拟内存中的位置。 我们知道,C语言中的局部变量位于栈上。如果我们打印一个局部变量的内存地址,就可以根据这个地址寻找栈在虚拟内存中的位置。我们使用下面的程序(…
虚拟内存探究 -- 第二篇:Python 字节
这是虚拟内存系列文章的第二篇。 这次我们要做的事情和《虚拟内存探究 -- 第一篇:C strings & /proc》类似,不同的是我们将访问Python 3 脚本的虚拟内存。这会比较费劲, 所以我们需要了解Pyhton3 内部的一些机制。 本文基于上一篇文章《虚拟内存探究 -…
虚拟内存探究 -- 第一篇:C strings & /proc
这是虚拟内存系列文章的第一篇。 本文通过实验的手段, 带大家了解一些计算机科学相关的基础知识。 在本文,我们将利用/proc查找进程虚拟内存中的ASCII字符串, 然后修改该字符串。 在这一过程中,我们将学到很多有趣的东西。 在计算机领域, 虚拟内存是通过软硬件结合实现的一种内…
移位溢出
本文简要介绍左移导致的溢出问题。 实际项目中需要计算SD卡中某个目录的大小,并判断该目录所占空间是否超过SD卡总容量的一半。 测试过程中经常发现误报,该目录所占空间远小于SD卡容量一半的时候,就上报占用空间过半的事件。 排查发现原来是计算的时候移位导致了溢出。问题代码如下: 错…
串口通信中ICRNL惹的祸
不怕不知道, 就怕不知道自己不知道。 设备A和设备B通过串口通讯,如下图所示。使用COBS进行编解码主要是为了报文分割(解决粘包半包问题)。 开发和测试期间,A和B之间通信均正常。等到A设备批量生产的时候,极个别A设备和B无法正常通信。 第一反应是A和B的COBS编解码库(A和…
gcc编译临时文件存放路径
仔细看了下错误信息,这个ccGjoKTF.s应该是编译过程的中间文件,其中文件名是随机值。然而makefile中并未要求保留汇编代码。 写了个demo,用strace(strace gcc test)跟踪了下,发现gcc不仅把汇编代码(.s)写到了tmp目录,也把二进制文件(.…
去掉宏__FILE__的路径
本文介绍如何去掉宏__FILE__的路径,只显示文件名。 取消宏__FILE__会产生编译警告,如果不想产生警告,可以考虑新建一个宏, 比如_FILENAME_。 更多内容,请移步blog.coderhuo.tech。
Json-C用法释疑
实际项目中发现Json-C用法不当导致的内存泄露、踩内存问题,大都是因为不清楚下面几个接口的用法。 以下分析基于https://github.com/json-c/json-c( 0.12.1 release)。 1. json_object_new_object生成的对象要不…
下一页