2017-04-21 11 views
0

私は私のプログラムで可能性のあるエラーを見つけるために、straceのを使用していると私はこの出力を持つの印刷パス:値がこのアドレスに格納されている取得するためにはどのようかにstraceのを見分ける方法straceの:代わりにアドレス

open(0x7765533c, O_RDONLY) = -1 EACCES (Permission denied) 

パスパラメータを出力しますか?

+0

straceは常にあなたのシステムでそれを行いますか、それともあなたのプログラムのためだけですか?なぜなら私がいつでもそれを使用していたので、最初に 'open'の最初のパラメータが文字列として表示されていたからです。 –

+0

いいえ、動的リンクのような他の呼び出しの場合、straceは文字列を代わりに表示します。この出力のオープントレースは、自分のコードからではなく、私が使用しているライブラリからのものです。 –

答えて

0

straceは、が有効なメモリ位置を指していないので、文字列を表示できないときのポインタ値を示します。この場合、ポインタのバイトは疑似的にASCIIのように見えます。

77 65 73 3c 
w e s < 

文字列から4バイトを抽出してポインタとして誤って解釈しました。

少なくともそれはほとんどそれがどのように見えるのですか?私が説明できないことが1つあります。それがEFAULTではなくEACCESを得た方法です。

関連する問題