2017-04-21 59 views
0

我使用strace的找到我的程序可能出現的錯誤,我有這樣的輸出:strace的:打印路徑,而不是地址

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

如何獲得存儲的值在這個地址或者如何告訴strace的到打印路徑參數?

+0

strace是否總是在您的系統上執行此操作,或者只是爲您的程序執行此操作?因爲每當我使用它時,它總是顯示「open」的第一個參數爲一個字符串。 –

+0

不,對於其他調用(如動態鏈接),strace顯示字符串。此輸出中的開放跟蹤來自我正在使用的庫,而不是來自我自己的代碼。 –

回答

0

strace顯示指針值,當它不能顯示一個字符串時,因爲指針沒有指向有效的內存位置。在這種情況下,指針的字節看起來像ASCII一樣。

77 65 73 3c 
w e s < 

你莫名其妙地提取從您的字符串4個字節和曲解他們作爲一個指針。

至少大部分是它的樣子。有一件事我無法解釋,這就是你如何得到EACCES而不是EFAULT。