查看Unix/Linux进程内存分布
摘自:https://nanxiao.me/unix-process-memory-map/
在Unix
平台,如果要查看某个进程的内存分布,可以使用gdb
附着在该进程,再使用“info proc mappings
”命令:
$ sudo gdb -p 1 ...... (gdb) info proc mappings process 1 Mapped address spaces: Start Addr End Addr Size Offset objfile 0x400000 0x401000 0x1000 0x0 /usr/bin/runit 0x401000 0x480000 0x7f000 0x1000 /usr/bin/runit 0x480000 0x4aa000 0x2a000 0x80000 /usr/bin/runit 0x4ab000 0x4ae000 0x3000 0xaa000 /usr/bin/runit 0x4ae000 0x4b0000 0x2000 0x0 0x62d000 0x650000 0x23000 0x0 [heap] 0x7ffe5e3f3000 0x7ffe5e414000 0x21000 0x0 [stack] 0x7ffe5e4a4000 0x7ffe5e4a7000 0x3000 0x0 [vvar] 0x7ffe5e4a7000 0x7ffe5e4a8000 0x1000 0x0 [vdso]
另外在Linux
系统上,也可以使用pmap
命令:
$ sudo pmap -x 1 1: runit Address Kbytes RSS Dirty Mode Mapping 0000000000400000 4 4 0 r---- runit 0000000000401000 508 440 0 r-x-- runit 0000000000480000 168 124 0 r---- runit 00000000004ab000 12 12 12 rw--- runit 00000000004ae000 8 8 8 rw--- [ anon ] 000000000062d000 140 8 8 rw--- [ anon ] 00007ffe5e3f3000 132 12 12 rw--- [ stack ] 00007ffe5e4a4000 12 0 0 r---- [ anon ] 00007ffe5e4a7000 4 4 0 r-x-- [ anon ] ---------------- ------- ------- ------- total kB 988 612 40
通过查看进程的内存分布,可以了解哪些地址是有效的,可写的;这对于调试有一定帮助。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2020-01-07 手机信号强度满足dbm=-113+2*asu
2020-01-07 win10下查看进程,杀死进程
2020-01-07 [windows bat]如何停止一个进程
2020-01-07 Pycharm,debug调试时怎样带参数
2020-01-07 命令行语法格式及特殊字符