【问题标题】:Retrieving the memory map of its own process in QNX在 QNX 中检索自己进程的内存映射
【发布时间】:2016-01-04 08:36:51
【问题描述】:

在 Linux 中,如果我们查看 /proc/self/maps:

00400000-004ef000 r-xp 00000000 08:01 12845058                           /bin/bash
006ef000-006f0000 r--p 000ef000 08:01 12845058                           /bin/bash
006f0000-006f9000 rw-p 000f0000 08:01 12845058                           /bin/bash
006f9000-006ff000 rw-p 00000000 00:00 0
00d5a000-010a2000 rw-p 00000000 00:00 0                                  [heap]
7f6fe582a000-7f6fe5835000 r-xp 00000000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5835000-7f6fe5a34000 ---p 0000b000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5a34000-7f6fe5a35000 r--p 0000a000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so
7f6fe5a35000-7f6fe5a36000 rw-p 0000b000 08:01 1048595                    /lib/x86_64-linux-gnu/libnss_files-2.19.so

我想要 Qnx 的路径名和起始地址等信息。我怎样才能获得这些信息?

我的分析说 Qnx 中没有 /proc/self/maps 文件。

【问题讨论】:

  • 如果您觉得我的回答有用,可以接受吗?

标签: linux virtual-memory qnx memory-mapping


【解决方案1】:

尝试使用这个:

pidin -p<process> mapinfo

【讨论】:

    【解决方案2】:

    我们在 QNX 中也有自己的文件!!

    地址空间由 /proc 中每个文件夹中名为“as”的二进制文件表示。 /proc/self/as 包含当前进程的地址空间。

    问题是它不是人类直接可读的。您需要使用 devctl() 来阅读它。以下是有关地址空间解码的所有 devctl 命令的链接。

    http://www.qnx.com/developers/docs/6.5.0_sp1/index.jsp?topic=%2Fcom.qnx.doc.neutrino_cookbook%2Fs3_procfs.html

    示例 - devctl("/proc/self/as",DCMD_PROC_TIDSTATUS,&debug_data, sizeof(debug_data)

    此命令将在 struct _debug_thread_info 结构中为您提供线程的调试数据。

    同样可以使用 DCMD_PROC_PAGEDATA 和 DCMD_PROC_MAPINFO 来获取进程地址空间的段映射(在 linux ma​​ps 文件中这样做)信息。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2010-12-10
      • 1970-01-01
      • 1970-01-01
      • 2014-10-09
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-26
      相关资源
      最近更新 更多