0
私は私のプログラムで可能性のあるエラーを見つけるために、straceのを使用していると私はこの出力を持つの印刷パス:値がこのアドレスに格納されている取得するためにはどのようかにstraceのを見分ける方法straceの:代わりにアドレス
open(0x7765533c, O_RDONLY) = -1 EACCES (Permission denied)
パスパラメータを出力しますか?
私は私のプログラムで可能性のあるエラーを見つけるために、straceのを使用していると私はこの出力を持つの印刷パス:値がこのアドレスに格納されている取得するためにはどのようかにstraceのを見分ける方法straceの:代わりにアドレス
open(0x7765533c, O_RDONLY) = -1 EACCES (Permission denied)
パスパラメータを出力しますか?
straceは、がが有効なメモリ位置を指していないので、文字列を表示できないときのポインタ値を示します。この場合、ポインタのバイトは疑似的にASCIIのように見えます。
77 65 73 3c
w e s <
文字列から4バイトを抽出してポインタとして誤って解釈しました。
少なくともそれはほとんどそれがどのように見えるのですか?私が説明できないことが1つあります。それがEFAULTではなくEACCESを得た方法です。
straceは常にあなたのシステムでそれを行いますか、それともあなたのプログラムのためだけですか?なぜなら私がいつでもそれを使用していたので、最初に 'open'の最初のパラメータが文字列として表示されていたからです。 –
いいえ、動的リンクのような他の呼び出しの場合、straceは文字列を代わりに表示します。この出力のオープントレースは、自分のコードからではなく、私が使用しているライブラリからのものです。 –