是否可以监控特定进程的每个单元内存

是否可以监控特定进程的每个单元内存

说我有一个非常简单的C程序test.c,它只打印“hello world”,它的名字a.out来自gcc test.c.

我在想是否可以准确监控运行时发生的情况a.out。例如,我想确切地知道使用了多少字节,等等a.out使用的每个单元存储器(8位)中发生了什么。a.out

好吧,我只想得到这样的东西:
此时,地址0X00001234的内存正在存储00001001;
下一刻,地址0X00001236的内存正在将其值放入缓存...

听起来像是用GDB一步步执行的。但对我来说,我只有一个可执行的二进制文件。我需要一种方法来测试它,而不是调试。

答案1

您可以使用该选项编译包含调试信息的程序-ggdb然后将遵循源代码,并且在逐步运行时,如果存在相应的源 .c 文件,则显示源代码中的正确行。

gdb界面还允许您检查源代码中存在的变量的相应内存位置。

我也不会使用test二进制名称,因为它与预先存在的指令冲突。

gcc -g mytest.c -o mytest 

-g 告诉编译器将符号表信息存储在可执行文件中。除其他外,这包括:

  • 符号名称
  • 输入符号信息
  • 符号来自的文件和行号

调试选项 -g 如何更改二进制可执行文件?

另请参阅我的相关答案了解 Linux 二进制文件正在做什么

相关内容