11.2. 使用 memstomp
要在您要分析的程序中运行 memstomp
程序:
scl enable devtoolset-11 'memstomp program argument...'
$ scl enable devtoolset-11 'memstomp program argument...'scl enable devtoolset-11 'memstomp program argument...'scl enable devtoolset-11 'memstomp program argument...'scl enable devtoolset-11 'memstomp program argument...'scl enable devtoolset-11 'memstomp program argument...'
要在检测到问题时立即终止分析的程序,请使用 --kill
(或 -k
表示短)命令行选项运行实用程序:
scl enable devtoolset-11 'memstomp --kill program argument...'
$ scl enable devtoolset-11 'memstomp --kill program argument...'scl enable devtoolset-11 'memstomp --kill program argument...'scl enable devtoolset-11 'memstomp --kill program argument...'scl enable devtoolset-11 'memstomp --kill program argument...'scl enable devtoolset-11 'memstomp --kill program argument...'
最好使用 --kill
选项。如果您正在分析多线程程序 ; 后端的内部实施不是 thread-safe,并在多线程程序上运行 memstomp
程序,因此无需此命令行选项即可生成不可靠的结果。
另外,如果使用调试信息或者这个调试信息编译了分析的程序,您可以使用 --debug-info
(或 -d
)命令行选项来生成更详细的后端:
scl enable devtoolset-11 'memstomp --debug-info program argument...'
$ scl enable devtoolset-11 'memstomp --debug-info program argument...'scl enable devtoolset-11 'memstomp --debug-info program argument...'scl enable devtoolset-11 'memstomp --debug-info program argument...'scl enable devtoolset-11 'memstomp --debug-info program argument...'scl enable devtoolset-11 'memstomp --debug-info program argument...'
有关如何使用二进制文件中内置的调试信息编译程序的详情,请参考 第 8.2 节 “准备进行调试的程序”。有关如何为任何 Red Hat Developer Toolset 软件包安装调试信息的详情,请参考 第 1.5.4 节 “安装调试信息”。
请注意,您可以使用 scl
程序执行任何命令,从而导致使用 Red Hat Developer Toolset 二进制文件运行它,而不是 Red Hat Enterprise Linux 系统等同的 Red Hat Enterprise Linux 系统。这可让您使用 Red Hat Developer Toolset memstomp
运行 shell 会话作为默认值:
scl enable devtoolset-11 'bash'
$ scl enable devtoolset-11 'bash'
例 11.1. 使用 memstomp
在当前工作目录中,创建名为 staff .c 的
源文件,其内容如下:
将这个程序编译到名为 employees 的二进制文件 中
:
scl enable devtoolset-11 'gcc -rdynamic -g -o employee employee.c'
$ scl enable devtoolset-11 'gcc -rdynamic -g -o employee employee.c'
识别带有重叠内存区域的错误功能调用: