首页
AI Coding
NEW
沸点
课程
直播
活动
AI刷题
APP
插件
搜索历史
清空
创作者中心
写文章
发沸点
写笔记
写代码
草稿箱
创作灵感
查看更多
会员
登录
注册
计算机基础
coderhuo
创建于2025-05-10
订阅专栏
计算机基础知识
暂无订阅
共26篇文章
创建于2025-05-10
订阅专栏
默认顺序
默认顺序
最早发布
最新发布
HaloOS vbslite初探
本文主要介绍HaloOS通信中间件vbslite,代码版本tag_V1.0.0_20250721,运行在Ubuntu 20.04上。
uid/gid变更导致无法生成coredump的问题
项目中遇到一个问题,某个进程已经通过prctl(PR_SET_DUMPABLE, 1)将其设置为dumpable,但还是无法生成coredump,其他进程能生成,说明系统配置没问题。
静态库重复链接导致的crash问题
近期项目中遇到一个静态变量被double free导致的crash问题。 奇怪的是这个静态变量被构造了两次,但内存地址却是一样的。
浅析elf中的.bss和.data
elf文件中存在.data和.bss两个section,前者用来存储已经初始化的全局/静态变量,后者用来存储未初始化的全局/静态变量。
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卡容量一半的时候,就上报占用空间过半的事件。 排查发现原来是计算的时候移位导致了溢出。问题代码如下: 错…
下一页