无法正确理解 pmap 的输出

发布于 2024-10-21 00:27:11 字数 1548 浏览 1 评论 0原文

我为线程编写了一个简单的 C 程序,其进程映射如下所示:

anirudh@anirudh-Aspire-5920:~/Documents/DUMP$ pmap 3232
3232:   ./a.out
00148000   1372K r-x--  /lib/libc-2.12.1.so
0029f000      8K r----  /lib/libc-2.12.1.so
002a1000      4K rw---  /lib/libc-2.12.1.so
002a2000     12K rw---    [ anon ]
003c8000      4K r-x--    [ anon ]
00640000    112K r-x--  /lib/ld-2.12.1.so
0065c000      4K r----  /lib/ld-2.12.1.so
0065d000      4K rw---  /lib/ld-2.12.1.so
0074c000     84K r-x--  /lib/libpthread-2.12.1.so
00761000      4K -----  /lib/libpthread-2.12.1.so
00762000      4K r----  /lib/libpthread-2.12.1.so
00763000      4K rw---  /lib/libpthread-2.12.1.so
00764000      8K rw---    [ anon ]
08048000      4K r-x--  /home/anirudh/Documents/DUMP/a.out
08049000      4K r----  /home/anirudh/Documents/DUMP/a.out
0804a000      4K rw---  /home/anirudh/Documents/DUMP/a.out
08155000    132K rw---    [ anon ]
b6856000      4K -----    [ anon ]
b6857000   8192K rw---    [ anon ]
b7057000      4K -----    [ anon ]
b7058000   8200K rw---    [ anon ]
b786b000     12K rw---    [ anon ]
bfc8e000    132K rw---    [ stack ]
 total    18312K
anirudh@anirudh-Aspire-5920:

现在脱离了上面的映射 我认为这一定是代码段,因为除非架构支持自修改代码,否则代码段无法更改

08048000 4K rx-- /home/anirudh/Documents/DUMP/a.out

这是数据段。我声明了一个全局变量并检查了它的地址并位于下一段的地址范围内。

0804a000 4K rw--- /home/anirudh/Documents/DUMP/a.out

现在我不明白下面的段是什么......是代码还是数据。

08049000 4K r---- /home/anirudh/Documents/DUMP/a.out

感谢您阅读我的问题。请帮帮我。

I wrote a simple C program for threads whose process map looks like this:

anirudh@anirudh-Aspire-5920:~/Documents/DUMP$ pmap 3232
3232:   ./a.out
00148000   1372K r-x--  /lib/libc-2.12.1.so
0029f000      8K r----  /lib/libc-2.12.1.so
002a1000      4K rw---  /lib/libc-2.12.1.so
002a2000     12K rw---    [ anon ]
003c8000      4K r-x--    [ anon ]
00640000    112K r-x--  /lib/ld-2.12.1.so
0065c000      4K r----  /lib/ld-2.12.1.so
0065d000      4K rw---  /lib/ld-2.12.1.so
0074c000     84K r-x--  /lib/libpthread-2.12.1.so
00761000      4K -----  /lib/libpthread-2.12.1.so
00762000      4K r----  /lib/libpthread-2.12.1.so
00763000      4K rw---  /lib/libpthread-2.12.1.so
00764000      8K rw---    [ anon ]
08048000      4K r-x--  /home/anirudh/Documents/DUMP/a.out
08049000      4K r----  /home/anirudh/Documents/DUMP/a.out
0804a000      4K rw---  /home/anirudh/Documents/DUMP/a.out
08155000    132K rw---    [ anon ]
b6856000      4K -----    [ anon ]
b6857000   8192K rw---    [ anon ]
b7057000      4K -----    [ anon ]
b7058000   8200K rw---    [ anon ]
b786b000     12K rw---    [ anon ]
bfc8e000    132K rw---    [ stack ]
 total    18312K
anirudh@anirudh-Aspire-5920:

now out of the above mapping
I think this must be the code segment because code segment can-not be changed unless the architecture supports self modifying code

08048000 4K r-x-- /home/anirudh/Documents/DUMP/a.out

This is the data segment. I declared a global variable and checked its address and lied in the address range of the following segment.

0804a000 4K rw--- /home/anirudh/Documents/DUMP/a.out

Now I do not understand what is the following segment for...is it code or data.

08049000 4K r---- /home/anirudh/Documents/DUMP/a.out

Thanks for reading my question. Please help me out.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

葬﹪忆之殇 2024-10-28 00:27:11

它是只读数据,例如字符串文字。

r-x: Code, and potentially read-only data
rw-: Data, modifiable
r--: Data, read-only

It's read-only data, such as e.g. string literals.

r-x: Code, and potentially read-only data
rw-: Data, modifiable
r--: Data, read-only
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文