2013-04-24 55 views
1

我有一個任務,我必須使用ptrace來跟蹤應用程序的系統調用。 問題是,當我運行程序時,它給了我一些不常見的值,即從寄存器獲得的輸出。其中一些值是負數。ptrace寄存器中返回的異常值

下面是代碼:http://pastebin.com/iMXYmqG6 這裏是一些樣本輸出:http://pastebin.com/bVa5vnWT

如果任何人都可以給我什麼我做錯了,我會非常感激的一些方向。

P.S.我正在使用64位操作系統,但我正在構建一個32位應用程序(這是對作業的限制)。

+0

也許隨機的巨大數字是因爲調用需要少於三個參數,而它不需要的那些被忽略。 – Patashu 2013-04-24 01:15:22

+0

那麼我沒有檢查所有的電話,但至少打開,讀寫電話需要3個參數基於本網站http://cs.lmu.edu/~ray/notes/linuxsyscalls/和那些調用返回一些巨大的負數也是。 – 2013-04-24 10:47:13

+0

嗯,我想我知道我爲什麼得到那些奇怪的值,它可能是因爲我試圖用32位調試器來調試64位應用程序。情況會是這樣嗎? – 2013-04-25 14:32:06

回答

1

當您使用64位操作系統時,必須使用64位兼容的寄存器。即RAX,ORIG_EAX,EBX,EBX .....如果沒有,你會得到垃圾值