说我有一个非常简单的 C 程序test.c
,它只是打印“hello world”,它的名字a.out
来自gcc test.c
.
我在想是否有可能准确监控运行a.out
. 例如,我想知道到底有多少字节用于a.out
,每个单元格内存(8 位)中发生了什么a.out
等等。
好吧,我只想得到这样一个东西:
此时,地址0X00001234的内存存储着00001001;
下一刻,地址为0X00001236的内存正在把它的值放入缓存中……
听起来像是用GDB一步步执行。但对我来说,我只有一个可执行二进制文件。我需要一种方法来测试它,而不是调试。
-g
您可以使用该选项编译包含调试信息的程序。gdb
然后将遵循源代码,并且在逐步运行时显示源代码中的正确行(如果存在相应的源 .c 文件)。该
gdb
界面还允许您检查源代码中存在的变量的相应内存位置。我也不会使用
test
二进制名称,因为它与预先存在的指令冲突。请参阅调试选项 -g 如何更改二进制可执行文件?
另请参阅我的相关回答了解 Linux 二进制文件在做什么