如何查看应用程序使用的原始内存数据?比如,假设我有一个文件名something.sh。现在我运行命令./something.sh,然后我想查看它在 ram 中访问的所有数据以及它在我的文件系统中访问的所有文件、网络数据或它使用的连接。可能是此应用程序使用的内存的十六进制转储。我可以在 ubuntu 中做到这一点吗?
我想复制一个在 Linux 上无关进程中运行的文件描述符。我知道sendmsg(2)和SCM_RIGHTS(例如/sf/ask/314260341/),但只有在另一个进程是合作。我需要一个不需要其他进程积极合作的解决方案。我也知道我可以先创建文件描述符,保留一个副本,然后创建另一个进程,但我需要一个解决方案,其中另一个进程创建自己的文件描述符。
我可以看到文件描述符:
$ ls -l /proc/13115/fd/3
lrwx------ 1 pts pts 64 2013-05-04 13:15 /proc/13115/fd/3 -> socket:[19445454]
Run Code Online (Sandbox Code Playgroud)
但是,open("/proc/13115/fd/3", O_RDWR)在另一个进程中执行返回错误No such device or address。还有其他可行的方法吗?可能与ptrace?
我想打印出来分析系统堆的内容。显然,这应该是一个特权操作,并且可能与 GDB 的意图背道而驰。
具体来说,我想扫描整个系统堆,而不仅仅是堆的进程部分。
gdb可以做到这一点,如果可以,什么命令可以做到?如果没有,有没有可以做到这一点的工具?
如有必要,我愿意设置自定义驱动程序/调试内核/断点来完成此操作。
如果我正在使用 Firefox 并填写一个大表格(有很多文本要写),并且由于某种原因我不小心按下F5了表格中的所有文本,我可以在 Windows 上使用例如HxD来检索文本,因为它们还在记忆中。我如何在 Linux 下做同样的事情?(例如 Fedora)
我想查看程序执行时存储在 RAM 中的内容。我已经使用过cat /proc/[pid]/meminfo,但它只提供了地址和权限模式详细信息。我也尝试过pmaps -X pid,除了数据之外,它提供了太多细节。如何查看RAM上加载的内容?