9.2.5. システムコール結果の改ざん
システムコールから返されたエラーをシミュレートすると、プログラムで不足しているエラー処理の特定に役立ちます。
特定のシステムコールの結果としてプログラムが一般的なエラーを受け取るには、-e fault=
オプションを指定して strace
ユーティリティーを実行し、システムコールを指定します。
scl enable devtoolset-10 'strace -e fault=syscall program argument...'
$ scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'scl enable devtoolset-10 'strace -e fault=syscall program argument...'
エラーの種類または戻り値を指定するには、-e inject=
オプションを使用します。
scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument' scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'
$ scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'scl enable devtoolset-10 'strace -e inject=syscall:error=error-type program argument'
$ scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'scl enable devtoolset-10 'strace -e inject=syscall:retval=return-value program argument'
エラータイプと戻り値は相互排他的であることに注意してください。
例9.5 システムコール結果の改ざん
lsblk
という名前の実行ファイルを考慮してください。このファイルで strace
ユーティリティーを実行すると、mmap()
システムコールがエラーを返すようにします。